如何使用log4net的记录跟踪消息? [英] How to log Trace messages with log4net?

查看:170
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆