我已经为我的项目使用log4net创建了一个自定义appender。我使用AppenderSkeleton接口创建了SampleLogAppender类。
namespace Sample.Integrations.Utilities {
public class SampleLogAppender : AppenderSkeleton
{
public static IContext Context { get; set; }
protected override void Append(log4net.Core.LoggingEvent loggingEvent)
{
if (Context != null)
{
Context.LogMessage(RenderLoggingEvent( loggingEvent ));
}
}
protected override bool RequiresLayout
{
get { return true; }
}
}
}
如果我在配置文件中配置此类,则它无效。以下我正在使用的配置。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="LogAppender" type="Sample.Integrations.Utilities.SampleLogAppender ">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date{MM/dd/yyyy hh:mm:ss tt}] [%-5level] [%class]-[%method] - [%message] %newline" />
</layout>
</appender>
<logger name="LogRoot">
<level value="ALL" />
<appender-ref ref="LogAppender" />
</logger>
</log4net>
</configuration>
上面我正在使用的配置文件,但它无法正常工作。下面我正在使用log4net配置。
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(ConfigLocation));
Log = log4net.LogManager.GetLogger("LogRoot");
我也有Logger课程。
public class Logger
{
public static ILog Log;
public static string ConfigLocation = string.Empty;
private static readonly string ConversionPattern = "[%date{MM/dd/yyyy hh:mm:ss tt}] [%-5level] [%class]-[%method] - [%message] %newline";
public static void ConfigureLog(IContext context)
{
SampleLogAppender .Context = context;
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(ConfigLocation));
Log = log4net.LogManager.GetLogger("LogRoot");
} }
我在启动项目中初始化Logger,如下所示。
Logger.ConfigureLog(_context);
我使用下面的记录器。
Logger.Log.Debug("Test");
当我调用它时,Append()方法不会调用。
请提供一些解决方案。
答案 0 :(得分:2)
我尝试使用您的配置文件,经过一些修复后,请参阅log4net部分:
<log4net>
<root>
<level value="TRACE" />
<appender-ref ref="LogAppender" />
</root>
<appender name="LogAppender" type="Sample.Integrations.Utilities.SampleLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date{MM/dd/yyyy hh:mm:ss tt}] [%-5level] [%class]-[%method] - [%message] %newline" />
</layout>
</appender>
</log4net>
您的代码中出现的一些奇怪的东西是类型中的空格,最后是引号之前的空格。
<appender name="LogAppender" type="Sample.Integrations.Utilities.SampleLogAppender ">