如何靈活控制log4j日誌輸出級別

2021-07-27 08:44:15 字數 1316 閱讀 8330

我們知道:

log4j.logger.xx cover ==> log4j.rootlogger

也就是說rootlogger首先決定所有log的輸出級別,而log4j.logger.xx是對xx路徑下的jar包的輸出級別的修改,直接覆蓋rootlogger

但是對於不同的輸出口,他們的接收級別是不同的。

舉例1:

log4j.logger.com.test=debug

那麼就算設定com.test輸出的級別是debug,但是a只接收info級別以上的log,而b只接收warn級別以上的log

舉例2:

log4j.logger.com.test=info

那麼com.test只輸出info級別的,而a下設定的是debug,那麼com.test輸出的所有的日誌在a下可以全部顯示(當然是info以上的,因為com.test只給出了info以上的)。而在b下設定是warn,雖然com.test輸出info級別以上的log給b,但是b只接收warn以上的log。

通過這樣的方式配置,可以限定在不同的輸出口過濾不同等級的日誌。

應用舉例需求:

我們不太想輸出一些第三方jar的日誌,但是error級別以上的我們需要,我們想輸出我們自己的包下debug以上級別的日誌,但是在控制台我想看到所有的,而在日誌檔案下,我卻只想寫入warn級別以上的日誌。對於這樣的情況如何配置呢?

這個時候我們就根據依據的來配置一下log4j

首先來點背景設定

我們自己的jar包都是com.test開頭

a代表控制台輸出

b代表檔案輸出

當然那些都只是乙個命名

好,我們開始。首先所有的第三方jar都不太想看到輸出日誌,但是error的級別以上的需要

log4j.rootlogger=error, a,b

這句的意思就是設定所有log輸出給a,b的等級為error

然後,我們想輸出我們自己的包下debug以上級別的日誌。

log4j.logger.com.test=debug

這句是設定com.test包下的所有log輸出級別為debug,這裡的設定直接覆蓋了rootlogger對com.test包的作用。

最後,在控制台我想看到所有的,而在日誌檔案下,我卻只想寫入warn級別以上的日誌。

#config a position output contain debug level and up

#in the daily files

和日誌級別無關的**就不解釋了。直接重點,

表示a的接收級別為debug,而b的接收級別為warn。這樣,a就可以看到debug以上的所有日誌,而寫入b的只有warn級別以上的日誌。

Log4j日誌輸出

配置檔案示例 參考 link.log4j 的日誌輸出控制檔案,主要由三個部分構成 是專門用於控制日誌輸出的。其主要進行三方面控制 日誌屬性檔案由日誌附加器與根日誌組成 log4j 採用類似 c 語言中的 printf 函式的列印格式格式化日誌資訊 定義日誌輸出級別info和輸出位置控制台,檔案 lo...

log4j日誌輸出教程

log4j是幫助開發人員進行日誌輸出管理的api類庫。它最重要的特點就可以配置檔案靈活的設定日誌資訊的優先順序 日誌資訊的輸出目的地以及日誌資訊的輸出格式。log4j除了可以記錄程式執行日誌資訊外還有一重要的功能就是用來顯示除錯資訊。很多程式設計師經常會使用system.out.println語句輸...

Log4j日誌輸出詳解

log4j初始化詳解 url log4j日誌輸出詳解 url slf4j log4j的使用 url rootlogger管理,今天我們來看一下,日誌的列印輸出。日誌輸出源頭為下一句 log.info test daily level info 我們來看一下,這一句都做了些什麼?public fina...