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

标签 java logging log4j

有没有办法在加载之前将数据或设置传递给 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/

相关文章:

php - 静默 PHP 7.4.8 服务器请求日志 "Accepted", "Closing"

java - 我如何修改我的程序以要求我替换数组中输入的给定数字,因为它不在所需的范围内

java - 为什么 HashMap 中的不可变对象(immutable对象)如此有效?

java - 对字符串进行负运算

Java 日志记录 : show the source line number of the caller (not the logging helper method)

configuration - Log4J 1.2 和 Log4J 2.0 之间有什么主要区别吗?

java - 奇怪的 log4j 错误

java - 数据不按顺序显示

java - 作为 Windows 服务运行时的 Tomcat 日志记录

grails - 为 grails 记录器着色