【问题标题】:Create log4j logfiles per process为每个进程创建 log4j 日志文件
【发布时间】:2014-11-27 11:05:43
【问题描述】:

我正在使用 log4j2,并在 log4j2.xml 中有我的配置(在类路径中,因此它是自动配置的)

在这种特殊情况下,我想为每个进程创建单独的日志文件。

我有一个包含多个包和多个类的框架。他们都有这样的陈述:

Logger logger = LogManager.getLogger(getClass());

假设我现在有三个进程 A、B 和 C。我应该如何配置 log4j 以获取三个输出文件 A.log、B.log 和 C.log 并包含在框架类中进行的日志记录调用?

如果我需要调试等,我还希望能够将单个包/类记录到其他日志附加器,所以我更愿意保留上面提到的 getClass() 参数。

欢迎所有想法!

【问题讨论】:

  • 我实际上已经看到了那个答案,但我并没有完全理解它。例如,如果未定义属性会发生什么?
  • 进程是什么意思?您的意思是单独的 JVM 实例吗?
  • 是的,分离系统进程。

标签: java logging log4j log4j2


【解决方案1】:

您可以在创建进程时添加所需的名称,向 Java 虚拟机添加参数。例如:

java -Dcustom.log.name=/tmp/logs/A.log ... ...

所以,你可以使用它:

<File name="Application" fileName="${custom.log.name}">

在Apache Log4j 2 User's Guide [PDF] 中查看更多信息。

【讨论】:

    【解决方案2】:

    为每个进程提供自己的配置文件。在这些配置中指定不同的路径。

    您可以使用此系统属性指定配置文件的完整路径: -Dlog4j.configurationFile=path/to/log4j2.xml

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 2017-08-06
      相关资源
      最近更新 更多