如何使用log4net的记录跟踪消息? [英] How to log Trace messages with log4net?
问题描述
我使用log4net的记录写入日志消息滚动日志文件。
现在我也重定向从 System.Diagnostics.Trace
所有跟踪消息的日志文件。我该如何配置?我试图找到有关log4net的文档中的任何东西,但没有成功。是否有可能呢?
我想这样做的原因是因为我对感兴趣的第三方库的跟踪消息。
< log4net的>
<附加目的地名称=R1类型=log4net.Appender.RollingFileAppender>
<文件值=C:\日志\ MyService.log/>
< appendToFile值=真/>
< rollingStyle值=日期/>
< maxSizeRollBackups值=10/>
< datePattern值=年月日/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%DATE [%线程]%-5level%记录[%属性{NDC}] - %消息%换行/>
< /布局>
< /附加器>
< / log4net的>
据符文的建议,我实现了一个基本的TraceListener其输出到log4net的:
公共类Log4netTraceListener:System.Diagnostics.TraceListener
{
私人只读log4net.ILog _log;
公共Log4netTraceListener()
{
_log = log4net.LogManager.GetLogger(System.Diagnostics.Redirection);
}
公共Log4netTraceListener(log4net.ILog日志)
{
_log =记录;
}
公共覆盖无效写入(字符串消息)
{
如果(_log!= NULL)
{
_log.Debug(消息);
}
}
公众覆盖无效的WriteLine(字符串消息)
{
如果(_log!= NULL)
{
_log.Debug(消息);
}
}
}
I'm using log4net to log write log message to a rolling log file.
Now I would also redirect all trace messages from System.Diagnostics.Trace
to that log file. How can I configure that? I tried to find anything about that in the log4net documentation, but without success. Is it possible at all?
The reason I want to do that is because I am interested in the Trace messages of a 3rd party library.
<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>
According to Rune's suggestion I implemented a basic TraceListener which output to log4net:
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);
}
}
}
这篇关于如何使用log4net的记录跟踪消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!