2010-09-29 47 views
0

我想为每个线程创建不同的日志文件(线程正在处理一些网站处理)。基本上只需使用从正在处理的站点派生的名称命名日志文件即可。如何为每个log4net记录器实例创建一个新文件?

我知道所有关于GlobalContext.properties和TheadContext.properties的内容,但对于我所要做的事似乎都没有效果。在几乎任何情况下,任何并发运行的线程都会使用当前输出文件作为输出的文件。我看到的唯一区别是,如果我使用ThreadContext来设置属性,它使所有文件,但只有输出为一,使用全局它似乎只有一个文件,除非进程在不同的时间开始。

我真的很想做的是能够告诉该文件只使用记录器对象的文件名,而不是使用这些属性(即在实例化对象中使用的名称)的名称。

回答

1

我建议您重新考虑日志记录策略,而不是打击配置。 log4net不是为每个线程/类的日志文件构建的。记录器在启动时或第一次写入时创建(取决于)。使用一个拖尾的日志文件阅读器,如Kiwi日志查看器或Splunk,并在消息中过滤线程ID或记录器名称。

如果你把它们放在你的转换模式...

<conversionPattern value="%date [%thread] %-5level %logger: %message%newline" /> 
相关问题