2010-03-02 58 views
8

我有一个脚本,并行运行多个线程。这些线程写入Log4Net RollingFileAppender文件。因为所有的线程日志都混在一起,所以读这个日志是相当混乱的。 我想知道什么是写这些日志的好方法,以及读取这些文件的最佳方法是什么,以便读取特定线程的调试信息变得更容易。从多线程生成Log4Net读取日志

回答

7

更新您的配置文件以在日志输出中包含线程名称。如果您在代码中设置线程名称,则会将相同的名称记录到您的文件中。这是通过log4net的配置文件包括线程名<conversionPattern>标签的一个简单的例子:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="service.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="2MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     **<conversionPattern value="%-5level : [%t] - %message%newline" />** 
    </layout> 
</appender> 

UPDATE 我写了一个简单的POC应用证明这一点。 http://codereport.net/logging-the-thread-name-with-log4net/

+0

Thread.Name MSDN链接:http://msdn.microsoft.com/en-us/library/system.threading.thread.name.aspx – 2010-03-02 20:33:25

+0

我已经添加了线程信息,然后我使用LogExpert(http: //www.log-expert.de/)来过滤日志以轻松读取每个线程的踪迹。 – 2010-03-06 13:31:19

0

考虑将日志记录更容易处理,比如数据库。使用AdoNetAppender记录到数据库表,您可以轻松地对线程进行排序和过滤。

在log4net网站上有config samples关于如何实现这一目标。