log4j.xml中如何只輸出log.debug
阿新 • • 發佈:2018-12-09
背景:最近和其他專案聯調,需要證明我方傳送的資訊是正確的,需要打印出debug日誌。但是預設的debug列印的 帶了很多的jar包的資訊,還有很多的sql,這些目前是用不到了,所以可以的話,在聯調的時候遮蔽掉。
原理:因為jar等的資訊多餘,所以,對此類資訊進行篩選,使得自己的log.debug資訊能夠清晰展現。
具體如下:
一般的log4j有用propeties檔案的,也有用xml的,我用的是後者,並且列印到控制檯而不是檔案。(列印到檔案的可見底部連結)
原檔案如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %l %m%n" /> </layout> <!--限制輸出級別從高到低: OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL--> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="OFF" /> </filter> </appender> <root> <appender-ref ref="CONSOLE" /> </root> </log4j:configuration>
修改後檔案如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %l %m%n" /> </layout> <!--限制輸出級別從高到低: OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL--> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="OFF" /> <!-- <param name="AcceptOnMatch" value="true" /> --> </filter> </appender> <!-- 不列印指定的日誌,如org.framexxxx --> <logger name="org" additivity="false"> <level value="WARN" /> <appender-ref ref="ORG-LOCAL" /> </logger> <logger name="net" additivity="false"> <level value="WARN" /> <appender-ref ref="NET-LOCAL" /> </logger> <root> <!-- <priority value="INFO" /> --> <appender-ref ref="CONSOLE" /> <appender-ref ref="ORG-LOCAL" /> <appender-ref ref="NET-LOCAL" /> </root> </log4j:configuration>
其中關鍵logger:name=“org”即可以指定不列印org下所有org.xxx普通的資訊,而只打印warn以上的資訊。(也可以設org.fremework.xxx,這樣會列印除org.framework.除外的資訊,根據“.”來設定具體的級別)
另外,注意不要設定root中的優先順序priority。設定了的話,即便你在上方的levelMIN中設定了debug,會導致無法打debug資訊。
學習連結: