//
namespace DotNetOpenAuth.Loggers {
using System;
using System.Globalization;
using System.IO;
using System.Reflection;
internal class Log4NetLogger : ILog {
private log4net.ILog log4netLogger;
private Log4NetLogger(log4net.ILog logger) {
this.log4netLogger = logger;
}
#region ILog Members
public bool IsDebugEnabled {
get { return this.log4netLogger.IsDebugEnabled; }
}
public bool IsInfoEnabled {
get { return this.log4netLogger.IsInfoEnabled; }
}
public bool IsWarnEnabled {
get { return this.log4netLogger.IsWarnEnabled; }
}
public bool IsErrorEnabled {
get { return this.log4netLogger.IsErrorEnabled; }
}
public bool IsFatalEnabled {
get { return this.log4netLogger.IsFatalEnabled; }
}
#endregion
private static bool IsLog4NetPresent {
get {
try {
Assembly.Load("log4net");
return true;
} catch (FileNotFoundException) {
return false;
}
}
}
#region ILog methods
public void Debug(object message) {
this.log4netLogger.Debug(message);
}
public void Debug(object message, Exception exception) {
this.log4netLogger.Debug(message, exception);
}
public void DebugFormat(string format, params object[] args) {
this.log4netLogger.DebugFormat(CultureInfo.InvariantCulture, format, args);
}
public void DebugFormat(string format, object arg0) {
this.log4netLogger.DebugFormat(format, arg0);
}
public void DebugFormat(string format, object arg0, object arg1) {
this.log4netLogger.DebugFormat(format, arg0, arg1);
}
public void DebugFormat(string format, object arg0, object arg1, object arg2) {
this.log4netLogger.DebugFormat(format, arg0, arg1, arg2);
}
public void DebugFormat(IFormatProvider provider, string format, params object[] args) {
this.log4netLogger.DebugFormat(provider, format, args);
}
public void Info(object message) {
this.log4netLogger.Info(message);
}
public void Info(object message, Exception exception) {
this.log4netLogger.Info(message, exception);
}
public void InfoFormat(string format, params object[] args) {
this.log4netLogger.InfoFormat(CultureInfo.InvariantCulture, format, args);
}
public void InfoFormat(string format, object arg0) {
this.log4netLogger.InfoFormat(format, arg0);
}
public void InfoFormat(string format, object arg0, object arg1) {
this.log4netLogger.InfoFormat(format, arg0, arg1);
}
public void InfoFormat(string format, object arg0, object arg1, object arg2) {
this.log4netLogger.InfoFormat(format, arg0, arg1, arg2);
}
public void InfoFormat(IFormatProvider provider, string format, params object[] args) {
this.log4netLogger.InfoFormat(provider, format, args);
}
public void Warn(object message) {
this.log4netLogger.Warn(message);
}
public void Warn(object message, Exception exception) {
this.log4netLogger.Warn(message, exception);
}
public void WarnFormat(string format, params object[] args) {
this.log4netLogger.WarnFormat(CultureInfo.InvariantCulture, format, args);
}
public void WarnFormat(string format, object arg0) {
this.log4netLogger.WarnFormat(format, arg0);
}
public void WarnFormat(string format, object arg0, object arg1) {
this.log4netLogger.WarnFormat(format, arg0, arg1);
}
public void WarnFormat(string format, object arg0, object arg1, object arg2) {
this.log4netLogger.WarnFormat(format, arg0, arg1, arg2);
}
public void WarnFormat(IFormatProvider provider, string format, params object[] args) {
this.log4netLogger.WarnFormat(provider, format, args);
}
public void Error(object message) {
this.log4netLogger.Error(message);
}
public void Error(object message, Exception exception) {
this.log4netLogger.Error(message, exception);
}
public void ErrorFormat(string format, params object[] args) {
this.log4netLogger.ErrorFormat(CultureInfo.InvariantCulture, format, args);
}
public void ErrorFormat(string format, object arg0) {
this.log4netLogger.ErrorFormat(format, arg0);
}
public void ErrorFormat(string format, object arg0, object arg1) {
this.log4netLogger.ErrorFormat(format, arg0, arg1);
}
public void ErrorFormat(string format, object arg0, object arg1, object arg2) {
this.log4netLogger.ErrorFormat(format, arg0, arg1, arg2);
}
public void ErrorFormat(IFormatProvider provider, string format, params object[] args) {
this.log4netLogger.ErrorFormat(provider, format, args);
}
public void Fatal(object message) {
this.log4netLogger.Fatal(message);
}
public void Fatal(object message, Exception exception) {
this.log4netLogger.Fatal(message, exception);
}
public void FatalFormat(string format, params object[] args) {
this.log4netLogger.FatalFormat(CultureInfo.InvariantCulture, format, args);
}
public void FatalFormat(string format, object arg0) {
this.log4netLogger.FatalFormat(format, arg0);
}
public void FatalFormat(string format, object arg0, object arg1) {
this.log4netLogger.FatalFormat(format, arg0, arg1);
}
public void FatalFormat(string format, object arg0, object arg1, object arg2) {
this.log4netLogger.FatalFormat(format, arg0, arg1, arg2);
}
public void FatalFormat(IFormatProvider provider, string format, params object[] args) {
this.log4netLogger.FatalFormat(provider, format, args);
}
#endregion
///
/// Returns a new log4net logger if it exists, or returns null if the assembly cannot be found.
///
/// The created instance.
internal static ILog Initialize(string name) {
try {
return IsLog4NetPresent ? CreateLogger(name) : null;
} catch (FileLoadException) { // wrong log4net.dll version
return null;
} catch (TypeLoadException) { // Thrown by mono (http://stackoverflow.com/questions/10805773/error-when-pushing-dotnetopenauth-to-staging-or-production-environment)
return null;
}
}
///
/// Creates the log4net.LogManager. Call ONLY after log4net.dll is known to be present.
///
/// The created instance.
private static ILog CreateLogger(string name) {
return new Log4NetLogger(log4net.LogManager.GetLogger(name));
}
}
}