java如何捕获“log4j:WARN找不到记录器的附加器”?
我想处理这个错误来设置另一个配置log4j。可能吗
我没有任何stacktrace,只有log的警告
log4j:WARN No appenders could be found for logger (agent.Test1Agent.JavaAgent).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
# 1 楼答案
因为log4j不会抛出任何异常,也不会在配置错误时以某种方式发出通知,所以无法正确执行您想要的操作。但这是可能的。
见下面的PoC
这个解决方案并不完美,但确实有效
# 2 楼答案
通过在类路径上提供默认配置文件,可以设置替代的log4j配置。由于log4j使用
Thread.getContextClassLoader().getResource()
来定位默认配置文件,并且不直接检查文件系统,因此它应该包含在jar中。因此,如果没有提供外部配置,它将返回默认配置。 有关详细信息,请参见http://logging.apache.org/log4j/1.2/faq.html#noconfig