log4j2?xml配置文件屏蔽第三方依賴包的日志方式
第三方日志
代碼如下,這個是一個最簡單的,只打印日志到控制臺的配置,這里將用這個代碼來作為例子來解釋如何屏蔽掉第三方日志。
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="WARN" monitorInterval="600">
<Appenders>
<Console name="console_out_appender" target="SYSTEM_OUT">
<!-- 輸出日志的格式 -->
<PatternLayout pattern="%5p [%t] %d{yyyy-MM-dd HH:mm:ss} (%F:%L) %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- 配置日志的根節(jié)點,打印trace等級及其以上等級的日志 -->
<root level="trace">
<appender-ref ref="console_out_appender"/>
</root>
</Loggers>
</Configuration>
在用這個配置文件的時候,就會發(fā)現(xiàn)有大量的第三方日志充斥其中,導(dǎo)致像查找自己的日志非常的困難,效果如下所示
這個是第三方日志中的zookeeper的心跳機制日志,幾乎一秒鐘輸出一行,特別煩人
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:30 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 48ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:31 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 9ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:32 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 4ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:34 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 7ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:35 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 6ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:36 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 24ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:38 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 11ms
專門屏蔽某一個第三方日志
要想屏蔽這個日志,一個是直接提升日志的根節(jié)點的日志等級到info,這樣就看不到這些日志了,但是這樣也會掩蓋主自己的info已下的等級的日志。
但可以通過添加<logger>標簽來專門屏蔽第三方日志,代碼如下所示。
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="WARN" monitorInterval="600">
<Appenders>
<Console name="console_out_appender" target="SYSTEM_OUT">
<!-- 輸出日志的格式 -->
<PatternLayout pattern="%5p [%t] %d{yyyy-MM-dd HH:mm:ss} (%F:%L) %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- 配置日志的根節(jié)點 -->
<root level="trace">
<appender-ref ref="console_out_appender"/>
</root>
<!-- 第三方日志系統(tǒng) -->
<logger name="org.apache.zookeeper" level="info"/>
</Loggers>
</Configuration>
這樣就可以通過info的等級來專門限制zookeeper的心跳機制日志了,同時不影響自己的日志等級。
但是亂輸出日志的東西還有很多,其中就包括spring框架,然后就可以通過添加logger的方式來屏蔽日志
批量屏蔽第三方日志
為了屏蔽第三方日志,不得不加了很多l(xiāng)ogger,而且還屏蔽不全,最主要的原因是不知道要屏蔽的logger的name屬性,只能從網(wǎng)上搜,結(jié)果如下,依然屏蔽不全。
<!-- 第三方日志系統(tǒng) --> <logger name="org.springframework.core" level="info"/> <logger name="org.springframework.beans" level="info"/> <logger name="org.springframework.context" level="info"/> <logger name="org.springframework.web" level="info"/> <logger name="org.jboss.netty" level="info"/> <logger name="org.apache.http" level="info"/> <logger name="org.apache.zookeeper" level="info"/> <logger name="org.apache.maven.plugins" level="info"/>
怎么批量設(shè)置第三方日志,我試了用通配符'*',但是不管用,網(wǎng)上搜了半天,發(fā)現(xiàn)對logger節(jié)點下name屬性的描述只有一句話:name:用來指定該Logger所適用的類或者類所在的包全路徑,繼承自Root節(jié)點。
可能是我閱讀理解不行,看不懂。
最后查了https://stackoverflow.com/questions/44551571/log4j2-wildcard-logger-names和https://logging.apache.org/log4j/2.x/manual/api.html#Logger_Names,才明白,只要屏蔽掉了父級日志,就會自動屏蔽子一級日志。
所以上面寫這么多東西都屏蔽不全的,改成下面一句話就可以了。
<!-- 第三方日志系統(tǒng) --> <logger name="org" level="info"/>
天哪,網(wǎng)上搜了好多人的答案,都是傻乎乎的一個一個的配置,看著真是讓人太絕望了。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java處理數(shù)據(jù)庫不支持的emoji表情符問題解決
這篇文章主要介紹了java處理數(shù)據(jù)庫不支持的emoji表情符問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09
微服務(wù)架構(gòu)設(shè)計RocketMQ進階事務(wù)消息原理詳解
這篇文章主要介紹了為大家介紹了微服務(wù)架構(gòu)中RocketMQ進階層面事務(wù)消息的原理詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助2021-10-10
springboot接口參數(shù)校驗JSR303的實現(xiàn)
本文主要介紹了springboot接口參數(shù)校驗JSR303的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Spring注解 TX聲明式事務(wù)實現(xiàn)過程解析
這篇文章主要介紹了Spring注解 - TX 聲明式事務(wù)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法
這篇文章主要給大家介紹了關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08

