2

我想知道是否有一种方法可以在与定义实际日志记录属性的文件不同的文件上定义附加程序(文件、控制台等)。这个想法来自我正在开发的一个系统,我们有以下要求:系统的不同版本将部署在同一台服务器上。因此,为了不维护不同的 log4j 属性文件,这将设置相同的属性并在文件附加程序上有所不同(以便知道哪个日志是从哪个版本的系统记录的)。先感谢您

4

2 回答 2

1

您可以使用 DOMConfigurator 或 PropertyConfigurator 从外部文件加载您的 log4j 设置。您可以在一次运行中多次调用此 API 以从不同来源加载设置。

在您的情况下,您可以根据版本从另一个属性文件单独动态加载 Appender 详细信息。就像在文件名后添加一些版本 ID 并以通用方式从代码中加载它一样。

于 2013-10-13T12:57:26.707 回答
0

如果每个版本运行在不同的 VM 进程上(在不同的端口上),您可以向虚拟机添加一个参数。例如:

-Dmysystem.version=1.0.1

如果您使用 XML 配置:

<param name="file" value="/logs/system.v${mysystem.version}.log" />

如果您正在使用属性:

log4j.appender.ROLL.File=/logs/system.v${mysystem.version}.log

在这两种情况下,生成的文件可能是:

/logs/system.v1.0.1.log

这样,您可以维护单个配置文件和动态文件名。

于 2013-10-15T12:58:37.380 回答