Dot-Net
log4net 日誌記錄 Debug.WriteLine 和 Console.WriteLine
感謝這裡的一位使用者,我最近遇到了 log4net。無論如何,我想將每個 Console.Write() 和 Debug.Write() 自動記錄到我配置的單個日誌文件中。此外,我使用許多類庫,它們也有對 log4net 一無所知的控制台/調試語句。這些也可以根據配置自動記錄到日誌文件嗎?這有可能嗎?
我想在滾動日誌文件中記錄的內容:
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的自定義來重定向
Debug.WriteLine(在調試版本中)和log4net。一個簡單的實現的主要部分看起來像:Trace.WriteLine``TraceListenerpublic 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重定向到您自己的自定義,並且您的自定義可以登錄到 log4net。TextWriter``Console.SetOut``TextWriter