2015-09-29 52 views
3

我的使用Log4j2作爲其日誌實現的Java應用程序依賴於使用Log4j的第三方庫。將第三方庫的Log4j日誌記錄路由到Log4j2

我想在我的應用程序編程設定根記錄的appender和日誌級別(使用下面的代碼)這些第三方記錄器,但這些第三方庫的記錄儀還沒有記錄到myAppender:

LoggerContext ctx = (LoggerContext) LogManager.getContext(false); 
LoggerConfig loggerConfig = ctx.getConfiguration().getLoggerConfig(
     LogManager.ROOT_LOGGER_NAME); 
loggerConfig.addAppender(myAppender, Level.ERROR, null); 
ctx.updateLoggers(); 

我想到的一個解決方案是使用Log4jToSLF4JAdaptor將log4j的日誌記錄路由到SLF4J,然後使用Log4JSLF4JImpl將SLF4J的日誌記錄路由到我的Log4J2實現中,但如此處所述(https://logging.apache.org/log4j/2.0/log4j-slf4j-impl/index.html),將導致無限的路由。

您能否建議我如何將這些第三方庫的記錄器記錄到myAppender?

+2

可能的[使用單個log4j2 xml文件配置log4j2和log4j]的重複(http://stackoverflow.com/questions/22321109/configuring-log4j2-and-log4j-using-a-single-log4j2-xml-file ) – sazzad

回答

1

對於使用Log4j 1.x API的第三方庫:除了log4j-api和log4j-core jar文件之外,還需要將log4j-1.2-api jar文件添加到類路徑中。

對於使用SLF4J API的第三方庫:將log4j-api,log4j-core和log4j-slf4j-impl jar文件添加到您的類路徑中(您還需要slf4j API jar)。

對於使用JUL(java.util.logging中)的第三方庫:log4j的-API,log4j的核心和log4j的-JUL jar文件添加到類路徑,以及系統屬性java.util.logging.manager設置爲org.apache.logging.log4j.jul.LogManager