有没有办法在加载之前将数据或设置传递给 log4j,然后在配置文件中使用该属性。
我假设有一个我可以使用的系统属性:
log4j.appender.R.File=/usr/local/pfs/logs/${ws.host}/log4j.log
ws.host 是我要使用的属性。
但我该如何设置该值呢?
此外,我在网络环境中。我怎么知道在 log4j 加载之前在什么时候设置属性设置。
最佳答案
默认的 log4j PropertiesConfigurator 支持变量替换。
因此,您可以将像这样的系统属性 "-DmyProject.logFile="/temp/test.log"
传递给您的 Java 启动,然后在属性文件中有 "log4j .appender.R.File=${myProject.logFile}"
。
如果在 Web 环境中工作,您可能需要查看 Spring 的 Log4jConfigListener .它使用监听器(Servlet API 2.4+)在其他组件之前初始化 log4j。即使不使用 Spring,您也应该能够使用源代码作为示例轻松创建自己的监听器。
关于java - 在加载之前将属性传递给 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998118/