2015-11-24 152 views
3

我有一個運行基於Spring的servlet的Tomcat服務器。如何控制第三方庫中的日誌記錄

我已經設置了[project root]/src/log4j.properties文件,如下:

# Root logger option 
log4j.rootLogger=WARN, stdout 

# Redirect log messages to console 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%-5p %d{HH:mm:ss} %m [%c{3}:%L]%n 

log4j.logger.com.martincarney.bugTracker=DEBUG 
log4j.logger.com.martincarney.bugTracker.controller=ERROR 

這正確地記錄自己的代碼就好了,但似乎沒有任何效果從我使用的各種庫中記錄。例如,即使在我的log4j.properties中添加了log4j.logger.org.apache=WARN,在Tomcat啓動過程中,我仍然從org.apache.*獲得INFO日誌到Eclipse控制檯錯誤流。

我使用的是通過Maven獲得的slf4j-apislf4j-log4j罐。

如何在我自己的代碼之外控制日誌級別和目標?

回答

1

一些圖書館使用其他日誌框架,如java.util.logging。對Jakarta Commons日誌

重定向:

您可以用SLF4J重定向日誌,看到SLF4J - Bridging legacy APIs

爲了便於遷移從JCL到SLF4J,SLF4J分佈包括jar文件jcl-over-slf4j.jar。該jar文件旨在作爲JCL版本1.1.1的直接替代品。它實現了JCL的公共API,但是使用了SLF4J,因此名稱爲「JCL over SLF4J」。

重定向爲java.util.LoggingSLF4J API):

經由logging.properties配置文件安裝:

//寄存器SLF4JBridgeHandler作爲處理程序j.u.l.根記錄

處理器= org.slf4j.bridge.SLF4JBridgeHandler

對於java.util.Logging配置見JUL API

一些類似Apache CXF的庫支持多個日誌框架,請參見Apache CXF - Debugging and Logging

+0

問題其實我已經在使用slf4j,沒有意識到它和log4j不一樣。 –

+1

您可以擴展使用SLF4J重定向日誌記錄嗎?只是鏈接到其他頁面並不構成正確的StackOverflow答案。 –

相關問題