【问题标题】:Logback with external packages使用外部包进行 Logback
【发布时间】:2012-11-26 14:23:24
【问题描述】:

我正在使用 Logback 从集成框架中进行日志记录。所有集成都在同一个 Java VM 中运行,并使用一个 logback.xml 进行配置。它们都在单独的包中,我已经对其进行了设置,因此它们都使用滚动文件附加程序(仅使用简单的 class="x.y.z" 等)登录到自己的文件。这工作正常。

但是,所有的集成都引用了另一个 jar 文件,它是一个共享库。我可以为这个共享库中的类设置一个附加程序,但是将日志转到另一个文件会使跟踪变得非常困难。例如,第一个日志将出现在 integration_one.txt 中,下一个出现在 shared_lib.txt 中,下一个出现在 integration_one.txt 中。

我需要配置 logback,以便共享库日志与调用它的集成在同一个文件中。

我能想到的唯一方法是将包 x 中开始的线程中的所有日志记录到文件 y 中,但我不知道可以完成此操作的配置。

有人有什么想法吗?

【问题讨论】:

  • 不幸的是,Logback 不能那样工作。 jar 文件中的类无疑会初始化它们自己的 appender,并且通常使用它们的完全限定类名来这样做。

标签: java logback


【解决方案1】:

不幸的是,Logback 不能那样工作。

jar 文件中的类无疑会初始化它们自己的 appender,并且通常使用它们的完全限定类名来这样做。

控制附加日志的文件的配置部分使用完全限定的类名将日志条目定向到适当的文件。

简而言之,一个类可以将其日志定向到一个或多个附加程序,但我不知道有任何方法可以使用第三方代码将相同的类日志记录到不同的附加程序,具体取决于某些外部因素。

如果您在 jar 文件中编写了类,那么您可能会根据上下文向它们传递一个记录器以供使用,但我猜您没有源代码或不想修改它。

【讨论】:

  • 非常感谢您的回答!我确实有源代码并且不介意修改它,但是必须更改库中的每个日志记录引用并传递它们有点痛苦。但是,如果这是唯一的选择,那么这就是我要做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2019-08-01
  • 2014-10-25
  • 1970-01-01
  • 2020-05-25
相关资源
最近更新 更多