我正在使用log4net将写入日志消息记录到滚动日志文件中.
现在我还将所有跟踪消息重定向System.Diagnostics.Trace到该日志文件.我该如何配置?我试图在log4net文档中找到有关它的任何内容,但没有成功.有可能吗?
我想这样做的原因是因为我对第三方库的Trace消息感兴趣.
<log4net>
<appender name="R1" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\MyService.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<maxSizeRollBackups value="10" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
Dir*_*mar 71
根据Rune的建议,我实现了一个输出到log4net的基本TraceListener:
public class Log4netTraceListener : System.Diagnostics.TraceListener
{
private readonly log4net.ILog _log;
public Log4netTraceListener()
{
_log = log4net.LogManager.GetLogger("System.Diagnostics.Redirection");
}
public Log4netTraceListener(log4net.ILog log)
{
_log = log;
}
public override void Write(string message)
{
if (_log != null)
{
_log.Debug(message);
}
}
public override void WriteLine(string message)
{
if (_log != null)
{
_log.Debug(message);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Run*_*tad 26
我不知道log4net是否支持这个,但你可以实现自己的跟踪监听器来做到这一点.
TraceListener没有太多需要实现的方法,您所要做的就是将值转发到log4net,这应该很容易实现.
要添加自定义跟踪侦听器,您可以修改app.config/web.config,也可以使用代码添加它 Trace.Listeners.Add(new Log4NetTraceListener());