我正在嘗試爲Maven項目啓用打印調試信息。我說的log4j作爲依賴於pom.xml
並添加log4j.properties
以及log4j2.properties
與rootloger=DEBUG, sdout
到src/main/resources
文件夾。然後,在所需的班級中,我啓動所需班級「org.pakage1.ClassA」中的記錄程序並添加logger.debug()
行,但是我的領事沒有顯示任何內容。當我檢查logger.isDebugEnabled()
返回false
如何使用.properties文件和maven在Log4j中啓用調試?
的pom.xml
<dependencies> ..... <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
log4j.properties,同樣log4j2
log4j.debug=true log4j.rootLogger=DEBUG, stdout log4j.appender.Stdout.threshold=debug log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%-5p %d [%t] %c{1} - %m%n
並作爲額外的步驟,我嘗試添加
log4j.logger.extendedsldnf.ExtendedSLDNFEvaluator=DEBUG
,但它也沒有工作。
package package1; ...... class ClassA{ private Logger logger = LoggerFactory.getLogger(getClass()); ...... public static void main(String []args){ logger.debug("message"); } }
知道我是在收到警告
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
而且該項目其他子模塊也有啓用日誌記錄類似的,當在log4j.properties
文件中所述調試消息行之有效
有什麼遺漏嗎?如何檢查是否有衝突?
謝謝你對我的答案似乎是合理的,但有一點..爲什麼可能'logger.isDbugEnabled()'返回false,而配置文件是顯式說明它是真的? –
不用客氣。因爲它是在運行時使用的Logback配置,而不是Log4J配置。 – davidxxx
我剛剛已經想通了,我發現,如果項目或其依賴項中有多個log4j.properties文件,只有其中一個被加載 –