【问题标题】:Log4J custom Logger (logging by Thread)Log4J 自定义 Logger(按线程记录)
【发布时间】:2012-03-12 09:27:40
【问题描述】:

我正在开发一个使用大量 Worker 线程来处理内容的应用程序。这些线程中的每一个都应该按照特定的命名约定写入自己的日志文件,主要取决于每个线程在创建时传入的一个字符串值。

我发现无法使用 log4j 执行此操作,这不涉及在编译时将所有可能的附加程序写入 log4j 配置。这对于我的应用程序来说是难以接受的。该项目已经包含很多对我不想重写的 Logger 对象的引用。

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

有没有更简单的方法来用 log4j 做到这一点?如果没有 - 是否有人有关于如何编写自己的日志记录实现的方法或教程?

【问题讨论】:

  • this是你之前的问题吗?

标签: multithreading debugging log4j


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多