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>標(biāo)簽來專門屏蔽第三方日志,代碼如下所示。
<?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)文章
MyBatis?實現(xiàn)多對多中間表插入數(shù)據(jù)
這篇文章主要介紹了MyBatis?實現(xiàn)多對多中間表插入數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Java實現(xiàn)自定義語言和表達(dá)式解析的解釋器模式
Java解釋器設(shè)計模式通過解析自定義語言和表達(dá)式,實現(xiàn)對復(fù)雜邏輯的處理,提高程序可擴展性和靈活性。它將語法解析和執(zhí)行過程分離,通過抽象語法樹和解釋器實現(xiàn)對語言和表達(dá)式的解析和求值,避免了硬編碼和復(fù)雜的條件判斷,提高了程序的可讀性和可維護(hù)性2023-04-04
JAVA中使用FileWriter寫數(shù)據(jù)到文本文件步驟詳解
這篇文章主要介紹了JAVA中使用FileWriter寫數(shù)據(jù)到文本文件步驟詳解,FileWriter類提供了多種寫入字符的方法,包括寫入單個字符、寫入字符數(shù)組和寫入字符串等,它還提供了一些其他的方法,如刷新緩沖區(qū)、關(guān)閉文件等,需要的朋友可以參考下2023-10-10
基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報錯:Not allowed to load local
這篇文章主要介紹了基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報錯:Not allowed to load local resource),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
MyBatis-Plus逆向工程——Generator的使用
這篇文章主要介紹了MyBatis-Plus逆向工程——Generator的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

