【问题标题】:Using log4j for different applications将 log4j 用于不同的应用程序
【发布时间】:2011-09-19 08:16:10
【问题描述】:

我在使用 log4j 登录时遇到问题,希望您能帮我解决这个问题。

这是场景:我有 3 个不同的应用程序(即 3 个 .jar)A、B 和 C。A 始终在运行,并且不时调用 B 和 C 来执行它们。它们每个都有自己的 log4j.properties(路径适当地包含在 MANIFEST 中),但 Log4j 只考虑主应用程序 A 的属性,而忽略其余部分。我需要知道我是否可以强制 Log4j 为每个应用程序使用它自己的属性。我已经看到了一些使用 DOMConfigurator 相关的东西,但如果我没记错的话,这只适用于 xml 文件并且我正在使用属性。

提前致谢

【问题讨论】:

    标签: log4j logging


    【解决方案1】:

    有几个Configurators,其中一个是PropertyConfigurator

    【讨论】:

      【解决方案2】:

      我需要知道我是否可以强制 Log4j 为每个应用程序使用它自己的属性。

      是的,你可以。当您启动应用程序 B 和 C 时,在其命令行中定义此系统变量:

      -Dlog4j.configuration=B.properties
      

      其中 B.properties 是 B 的类路径中 log4j 属性文件的文件名。应用程序 C 也是如此。

      编辑:发现这个:Change location of log4j.properties

      【讨论】:

      • Magda,A实例化B的主类并调用方法execute(B.execute()),它不直接执行main方法,所以不确定该命令的用处建议的行,我应该直接执行 main 方法吗?是否只需要通过此参数,或者我需要稍后对其进行处理?谢谢
      • @Fran 然后我们找到了原因:您没有执行应用程序 B,您只是实例化了一个类并调用了它的方法。您仍在 A 中。如果您要启动一个单独的应用程序,您将使用java.lang.Runtime.exec() 方法之一。按照您现在的方式,您将永远不会为 B 或 C 获得单独的 log4j 配置。
      • 好的,那么我无法分离日志,因为我现在无法更改执行应用程序的方式。无论如何感谢您的帮助
      • @Fran 好吧,你学到了一些东西。通过单击相应的按钮来表达您的感激之情是有礼貌的。它是免费的,就像任何人在 Stackoverflow 中的答案一样。
      • @Fran 嗯,我仍然看不到任何接受或赞成,直接说。什么吉普人。
      猜你喜欢
      • 2018-02-23
      • 1970-01-01
      • 2012-09-18
      • 2017-06-26
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多