在加载之前将属性传递给log4j

时间:2010-10-22 15:02:39

标签: java logging log4j

有没有办法在加载之前将数据或设置传递给log4j,然后在配置文件中使用该属性。

我假设有一个我可以使用的系统属性:

log4j.appender.R.File =的/ usr /本地/ PFS /日志/ $ {ws.host} /log4j.log

ws.host是我想要使用的属性。

但我该如何设定该值?

另外,我在网络环境中。如何在log4j加载之前知道在什么时候设置属性设置。

1 个答案:

答案 0 :(得分:4)

默认的log4j PropertiesConfigurator支持变量替换。

因此,您可以将此"-DmyProject.logFile="/temp/test.log"之类的系统属性传递给Java启动,然后在属性文件中传递"log4j.appender.R.File=${myProject.logFile}"

如果在网络环境中工作,您可能需要查看Spring的Log4jConfigListener。它使用一个监听器(Servlet API 2.4+)在其他组件之前初始化log4j。即使不使用Spring,您也应该能够使用源代码作为示例轻松创建自己的侦听器。