Log4j为Appender提供了不同的.property文件

时间:2013-10-11 14:39:05

标签: java log4j

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

-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

通过这种方式,您可以维护单个配置文件和动态文件名。