有没有办法在加载之前将数据或设置传递给log4j,然后在配置文件中使用该属性。
我假设有一个我可以使用的系统属性:
log4j.appender.R.File =的/ usr /本地/ PFS /日志/ $ {ws.host} /log4j.log
ws.host是我想要使用的属性。
但我该如何设定该值?
另外,我在网络环境中。如何在log4j加载之前知道在什么时候设置属性设置。
答案 0 :(得分:4)
默认的log4j PropertiesConfigurator支持变量替换。
因此,您可以将此"-DmyProject.logFile="/temp/test.log"
之类的系统属性传递给Java启动,然后在属性文件中传递"log4j.appender.R.File=${myProject.logFile}"
。
如果在网络环境中工作,您可能需要查看Spring的Log4jConfigListener。它使用一个监听器(Servlet API 2.4+)在其他组件之前初始化log4j。即使不使用Spring,您也应该能够使用源代码作为示例轻松创建自己的侦听器。