#region Apache License // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to you under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #endregion using System; using System.Globalization; using log4net.Core; using log4net.Repository; using log4net.Util; namespace log4net.Ext.MarshalByRef { /// /// Marshal By Reference implementation of /// /// /// /// Logger wrapper that is . These objects /// can be passed by reference across a remoting boundary. /// /// public sealed class MarshalByRefLogImpl : MarshalByRefObject, ILog { private readonly static Type ThisDeclaringType = typeof(MarshalByRefLogImpl); private readonly ILogger m_logger; private Level m_levelDebug; private Level m_levelInfo; private Level m_levelWarn; private Level m_levelError; private Level m_levelFatal; #region Public Instance Constructors public MarshalByRefLogImpl(ILogger logger) { m_logger = logger; // Listen for changes to the repository logger.Repository.ConfigurationChanged += new LoggerRepositoryConfigurationChangedEventHandler(LoggerRepositoryConfigurationChanged); // load the current levels ReloadLevels(logger.Repository); } #endregion Public Instance Constructors private void ReloadLevels(ILoggerRepository repository) { LevelMap levelMap = repository.LevelMap; m_levelDebug = levelMap.LookupWithDefault(Level.Debug); m_levelInfo = levelMap.LookupWithDefault(Level.Info); m_levelWarn = levelMap.LookupWithDefault(Level.Warn); m_levelError = levelMap.LookupWithDefault(Level.Error); m_levelFatal = levelMap.LookupWithDefault(Level.Fatal); } private void LoggerRepositoryConfigurationChanged(object sender, EventArgs e) { ILoggerRepository repository = sender as ILoggerRepository; if (repository != null) { ReloadLevels(repository); } } #region Implementation of ILog public void Debug(object message) { Logger.Log(ThisDeclaringType, m_levelDebug, message, null); } public void Debug(object message, Exception t) { Logger.Log(ThisDeclaringType, m_levelDebug, message, t); } public void DebugFormat(string format, params object[] args) { if (IsDebugEnabled) { Logger.Log(ThisDeclaringType, m_levelDebug, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); } } public void DebugFormat(string format, object arg0) { if (IsDebugEnabled) { Logger.Log(ThisDeclaringType, m_levelDebug, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0 }), null); } } public void DebugFormat(string format, object arg0, object arg1) { if (IsDebugEnabled) { Logger.Log(ThisDeclaringType, m_levelDebug, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1 }), null); } } public void DebugFormat(string format, object arg0, object arg1, object arg2) { if (IsDebugEnabled) { Logger.Log(ThisDeclaringType, m_levelDebug, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1, arg2 }), null); } } public void DebugFormat(IFormatProvider provider, string format, params object[] args) { if (IsDebugEnabled) { Logger.Log(ThisDeclaringType, m_levelDebug, new SystemStringFormat(provider, format, args), null); } } public void Info(object message) { Logger.Log(ThisDeclaringType, m_levelInfo, message, null); } public void Info(object message, Exception t) { Logger.Log(ThisDeclaringType, m_levelInfo, message, t); } public void InfoFormat(string format, params object[] args) { if (IsInfoEnabled) { Logger.Log(ThisDeclaringType, m_levelInfo, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); } } public void InfoFormat(string format, object arg0) { if (IsInfoEnabled) { Logger.Log(ThisDeclaringType, m_levelInfo, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0 }), null); } } public void InfoFormat(string format, object arg0, object arg1) { if (IsInfoEnabled) { Logger.Log(ThisDeclaringType, m_levelInfo, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1 }), null); } } public void InfoFormat(string format, object arg0, object arg1, object arg2) { if (IsInfoEnabled) { Logger.Log(ThisDeclaringType, m_levelInfo, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1, arg2 }), null); } } public void InfoFormat(IFormatProvider provider, string format, params object[] args) { if (IsInfoEnabled) { Logger.Log(ThisDeclaringType, m_levelInfo, new SystemStringFormat(provider, format, args), null); } } public void Warn(object message) { Logger.Log(ThisDeclaringType, m_levelWarn, message, null); } public void Warn(object message, Exception t) { Logger.Log(ThisDeclaringType, m_levelWarn, message, t); } public void WarnFormat(string format, params object[] args) { if (IsWarnEnabled) { Logger.Log(ThisDeclaringType, m_levelWarn, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); } } public void WarnFormat(string format, object arg0) { if (IsWarnEnabled) { Logger.Log(ThisDeclaringType, m_levelWarn, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0 }), null); } } public void WarnFormat(string format, object arg0, object arg1) { if (IsWarnEnabled) { Logger.Log(ThisDeclaringType, m_levelWarn, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1 }), null); } } public void WarnFormat(string format, object arg0, object arg1, object arg2) { if (IsWarnEnabled) { Logger.Log(ThisDeclaringType, m_levelWarn, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1, arg2 }), null); } } public void WarnFormat(IFormatProvider provider, string format, params object[] args) { if (IsWarnEnabled) { Logger.Log(ThisDeclaringType, m_levelWarn, new SystemStringFormat(provider, format, args), null); } } public void Error(object message) { Logger.Log(ThisDeclaringType, m_levelError, message, null); } public void Error(object message, Exception t) { Logger.Log(ThisDeclaringType, m_levelError, message, t); } public void ErrorFormat(string format, params object[] args) { if (IsErrorEnabled) { Logger.Log(ThisDeclaringType, m_levelError, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); } } public void ErrorFormat(string format, object arg0) { if (IsErrorEnabled) { Logger.Log(ThisDeclaringType, m_levelError, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0 }), null); } } public void ErrorFormat(string format, object arg0, object arg1) { if (IsErrorEnabled) { Logger.Log(ThisDeclaringType, m_levelError, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1 }), null); } } public void ErrorFormat(string format, object arg0, object arg1, object arg2) { if (IsErrorEnabled) { Logger.Log(ThisDeclaringType, m_levelError, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1, arg2 }), null); } } public void ErrorFormat(IFormatProvider provider, string format, params object[] args) { if (IsErrorEnabled) { Logger.Log(ThisDeclaringType, m_levelError, new SystemStringFormat(provider, format, args), null); } } public void Fatal(object message) { Logger.Log(ThisDeclaringType, m_levelFatal, message, null); } public void Fatal(object message, Exception t) { Logger.Log(ThisDeclaringType, m_levelFatal, message, t); } public void FatalFormat(string format, params object[] args) { if (IsFatalEnabled) { Logger.Log(ThisDeclaringType, m_levelFatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); } } public void FatalFormat(string format, object arg0) { if (IsFatalEnabled) { Logger.Log(ThisDeclaringType, m_levelFatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0 }), null); } } public void FatalFormat(string format, object arg0, object arg1) { if (IsFatalEnabled) { Logger.Log(ThisDeclaringType, m_levelFatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1 }), null); } } public void FatalFormat(string format, object arg0, object arg1, object arg2) { if (IsFatalEnabled) { Logger.Log(ThisDeclaringType, m_levelFatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, new object[] { arg0, arg1, arg2 }), null); } } public void FatalFormat(IFormatProvider provider, string format, params object[] args) { if (IsFatalEnabled) { Logger.Log(ThisDeclaringType, m_levelFatal, new SystemStringFormat(provider, format, args), null); } } public bool IsDebugEnabled { get { return Logger.IsEnabledFor(m_levelDebug); } } public bool IsInfoEnabled { get { return Logger.IsEnabledFor(m_levelInfo); } } public bool IsWarnEnabled { get { return Logger.IsEnabledFor(m_levelWarn); } } public bool IsErrorEnabled { get { return Logger.IsEnabledFor(m_levelError); } } public bool IsFatalEnabled { get { return Logger.IsEnabledFor(m_levelFatal); } } #endregion Implementation of ILog #region Implementation of ILoggerWrapper public ILogger Logger { get { return m_logger; } } #endregion /// /// Live forever /// /// null public override object InitializeLifetimeService() { return null; } } }