最近使用Storm開發,發現log4j死活打不出debug級別的日志,網上搜到的關於log4j配置的方法都試過了,均無效。
最終發現問題是這樣的:最新的storm使用的日志系統已經從log4j切換到了slf4j+logback。那么使用log4j的舊代碼怎么辦呢?為了避免對這些代碼作任何修改,slf4j提供了橋接工具:log4j-over-slf4j,提供與log4j完全相同的類名和接口,但是底層是slf4j的實現。這樣,在依賴了storm的工程中使用log4j,比如org.apache.log4j.Logger,實際找到的是log4j-over-slf4j中的完全同名的類。難怪對log4j.properties作任何修改都不起作用了,因為這里壓根就沒有log4j的任何事情。
發現這點以后就簡單了:提供logback的配置文件logback.xml,即可起到控制日志輸出的作用。未提供這個文件的時候,Java找到的是storm的jar包里的logback.xml。