当您不为log4j2提供配置时,我们都熟悉此消息:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
如何检查log4j2是否尚未配置,以便我可以根据需要使用默认配置进行初始化?
答案 0 :(得分:0)
在从应用程序第一次调用log4j2代码时,log4j将在方法返回之前自行配置。如果未找到配置文件,则log4j将使用默认配置自动配置,该配置仅将错误记录到控制台。因此,从您的应用程序的角度来看,从未有过配置log4j的时间。
一个想法是检查log4j2.xml文件是否在类路径中(使用Class.getResource),如果它不是调用System.setProperty("log4j.configurationFile", pathToYourConfig)
。请注意,必须在第一次调用log4j2 API之前完成。
替代方案:
一旦你有一个LoggerContext,你可以打电话
context.setConfigLocation(configLocation)
其中configLocation是一个URI。
这将迫使重新配置。
答案 1 :(得分:0)
我最终创建了自己的ConfigurationFactory并将其注册为
-Dlog4j.configurationFactory
这样你的ConfigurationFactory就会知道它是否已被调用过。