【问题标题】:how to set system properties before log4j2 load it's configuration?如何在 log4j2 加载它的配置之前设置系统属性?
【发布时间】:2013-12-05 06:32:08
【问题描述】:
我在 servlet 3.0+ 环境中使用 log4j2-beta09.jar。我希望在 log4j2.xml 中使用 ${sys:logPath} 之类的查找,这样我就可以设置系统属性。但是官方网站说“Log4j 2 Core JAR 文件是一个配置为在您的任何其他 Web 片段之前排序的 Web 片段应用程序”,因此它不会替换 ${sys:logPath} 变量。如何在 log4j2 加载它的配置之前设置系统属性?
【问题讨论】:
标签:
lookup
servlet-3.0
log4j2
system-properties
【解决方案1】:
一种方法是更改 Web 容器的配置。通常,Web 容器具有设置全局系统属性的方法。
如果您无法控制容器配置,或者您需要为不同的 Web 应用程序提供不同的系统属性,您可以在 Web 应用程序初始化时简单地调用 System.setProperty(name, value)。这里的棘手部分是确保在加载任何调用LogManager.getLogger() 的类作为其静态字段初始化的一部分之前设置系统属性。