Log4J自定义Logger(按线程记录)

时间:2012-03-12 09:27:40

标签: multithreading debugging log4j

我正在开发一个使用大量工作线程来处理内容的应用程序。每个Thread都应该按照特定的命名约定写入自己的日志文件,主要依赖于每个线程在创建时传入的一个String值。

我发现无法用log4j执行此操作,这不涉及在编译时将所有可能的appender写入log4j配置。这对我的申请几乎不可接受。该项目已经包含很多对Logger对象的引用,我不想重写它。

到目前为止,我已经开始编写一个实现Logger的类,但是从MyLogger到Logger的转换不会通过。将参考文献从Logger更改为MyLogger并不完全是火箭科学,但我希望在我的实现中保持非常接近log4j。

使用log4j有更简单的方法吗?如果不是 - 有没有人有关于如何编写自己的日志记录实现的操作方法或教程?

2 个答案:

答案 0 :(得分:1)

如果您切换到,则可以利用SiftingAppender。它完全符合您的要求:将基于某些标准的日志分成不同的appender,例如:文件。默认情况下,它使用(可能是一个好主意),但您可以轻松编写自己的Discriminator

请注意,从Log4J切换到Logback不是问题:log4j-over-slf4j。基本上你可以在不改变单行代码的情况下进行切换,仍然使用Log4J API。

答案 1 :(得分:0)

您可以实现自己的Appender,它会根据线程将日志事件附加到不同的文件。此appender可以在Log4J配置中注册,而无需更改日志记录代码。 This教程似乎与您的问题相似。