我已将我的应用程序迁移到log4j 2,并且我已通过log4j2.xml进行了配置
但是,我使用的一些库依赖于log4j 1.如果我使用以下命令运行应用程序:
-Dlog4j.configurationFile=path/to/log4j2.xml
log4j 1抱怨找不到配置文件.我正在使用log4j 2,log4j-1.2-api-2.0-rc1.jar提供的log4j 1.x桥.是否可以使用单个log4j2.xml进行配置?
我尝试过的另一种方法是将log4j和log4j2配置在一起:
-Dlog4j.configurationFile=path/to/log4j2.xml -Dlog4j.configuration=path/to/log4j.xml
我担心的是我的日志配置文件和输出的碎片.我也担心log4j.xml和log4j2.xml之间可能存在冲突.例如,logfile error.log配置为使用log4j 1中的FileAppender和log4j 2中的RollingFileAppender.
有什么建议?
[注意]
这是我看到的错误:
log4j:WARN No appenders could be found for logger (org.apache.activemq.util.ThreadPoolUtils). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我正在使用的log4j 2的版本是log4j 2.0 rc1.
[回答]
似乎activemq-5.8.0.jar与log4j 1捆绑在一起.解决方案只是在activemq之前加载log4j 1.x桥.
我建议使用log4j2发行版中包含的log4j-1.2适配器.这样,任何编码到log4j-1.2 API的库都可以使用log4j2而无需更改代码.
您的类路径应包括:
log4j的-API-2.6.1.jar
log4j的核心 - 2.6.1.jar
的log4j-1.2-API-2.6.1.jar
log4j2.xml
你的类路径应该不包括:
log4j的-1.2.x.jar
log4j.properties或log4j.xml(无论如何都会被log4j2忽略)
另见http://logging.apache.org/log4j/2.x/faq.html#which_jars