gpt4 book ai didi

.net - log4net 日志记录 Debug.WriteLine 和 Console.WriteLine

转载 作者:行者123 更新时间:2023-12-04 11:54:17 27 4
gpt4 key购买 nike

由于这里的用户,我最近来到了 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>

最佳答案

您可以重定向 Debug.WriteLine (在调试版本中)和 Trace.WriteLine通过编写自定义 TraceListener 登录到 log4net登录到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您可以重定向到您自己的自定义 TextWriter调用 Console.SetOut ,以及您的自定义 TextWriter可以登录到log4net。

关于.net - log4net 日志记录 Debug.WriteLine 和 Console.WriteLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838881/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com