我正在开发一个使用大量工作线程来处理内容的应用程序。每个Thread都应该按照特定的命名约定写入自己的日志文件,主要依赖于每个线程在创建时传入的一个String值。
我发现无法用log4j执行此操作,这不涉及在编译时将所有可能的appender写入log4j配置。这对我的申请几乎不可接受。该项目已经包含很多对Logger对象的引用,我不想重写它。
到目前为止,我已经开始编写一个实现Logger的类,但是从MyLogger到Logger的转换不会通过。将参考文献从Logger更改为MyLogger并不完全是火箭科学,但我希望在我的实现中保持非常接近log4j。
使用log4j有更简单的方法吗?如果不是 - 有没有人有关于如何编写自己的日志记录实现的操作方法或教程?
答案 0 :(得分:1)
如果您切换到logback,则可以利用SiftingAppender
。它完全符合您的要求:将基于某些标准的日志分成不同的appender,例如:文件。默认情况下,它使用mdc(可能是一个好主意),但您可以轻松编写自己的Discriminator
。
请注意,从Log4J切换到Logback不是问题:log4j-over-slf4j。基本上你可以在不改变单行代码的情况下进行切换,仍然使用Log4J API。
答案 1 :(得分:0)