繁体   English   中英

log4net记录Debug.WriteLine和Console.WriteLine

[英]log4net Logging Debug.WriteLine and Console.WriteLine

由于这里的用户,我最近来到了log4net。 无论如何,我想将每个Console.Write()和Debug.Write()自动记录到我配置的单个日志文件中。 另外,我使用了许多类库,这些类也有对log4net一无所知的Console / Debug语句。 这些也可以根据配置自动记录到日志文件中吗? 这有可能吗?

我想要记录滚动日志文件:

Console.WriteLine("console statement");
Debug.WriteLine("debug statement");

实例化记录器:

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static void InitializeLogger()
{
    XmlConfigurator.Configure();
}

整个app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="SubToolsPortServerTest.log"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="2" />
      <maximumFileSize value="1MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
      </layout>
    </appender>

    <root>
      <level value="ALL" />
      <appender-ref ref="LogFileAppender" />
    </root>
  </log4net>
</configuration>

您可以通过编写记录到log4net的自定义TraceListenerDebug.WriteLine (在调试版本中)和Trace.WriteLine重定向到log4net。 简单实现的重要部分将如下所示:

public class Log4NetTraceListener : TraceListener
{
    ILog _logger = ...;

    public override void WriteLine(string message)
    {
        _logger.Info(message);
    }
}

然后,您可以在应用程序配置文件中对此进行配置:

<system.diagnostics>
  ...
    <listeners>
      <add name="traceListener" type="MyNamespace.Log4NetTraceListener,MyAssembly" />
    </listeners>
   ...
</system.diagnostics>

更完整的实现可能支持记录器名称的配置,要使用的日志记录级别,以及可能的一些内部缓冲消息。

对于Console.WriteLine您可以通过调用Console.SetOut重定向到您自己的自定义TextWriter ,您的自定义TextWriter可以登录到log4net。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM