關於log4j的一些使用心得

2021-08-20 06:38:48 字數 1802 閱讀 2474

做實驗時需要將程式產生的異常記錄到日誌中,因此用到了log4j,log4j是第三方的庫,用之前需要匯入到專案中,匯入之後,最關鍵的步驟是寫配置檔案——log4j.properties,下面針對我在實驗中遇到的問題來簡單關於寫配置檔案的一些事情。

如果乙個專案很大,我們可能需要將日誌寫到不同的檔案中去,這樣做的好處是避免日誌檔案過大,同時也方便日後的查詢使用。通過配置log4j.properties,我們可以做到這點:

在配置檔案中,通常會有乙個根目的地,如下:

log4j.rootlogger = debug,console
這裡根目的地中設定將日誌輸出到控制台,同時日誌只記錄debug級別以上的日誌記錄。

然後我們還需要以下**才能實現將日誌輸出到控制台:

在具體的程式**中使用如下語句:

logger logger1 = logger.getlogger("rootlogger");
logger1.error("log");
可以實現將「log」輸出到控制台,如果我們需要將日誌寫到檔案中,我們可以將根目的地進行修改,如下:

log4j.rootlogger = debug,console,firstadpter
然後我們需要新增相應的配置語句實現輸出到檔案的功能,如下:

log4j.additivity.firstadpter = false

這樣就可以實現將日誌同時輸出到控制台和檔案中去,但是,如果我們需要將日誌輸出到多個檔案中去時,我們需要對配置檔案進行改造,如下:

log4j.rootlogger = debug,console

log4j.logger.firstlogger =debug,firstadpter

log4j.logger.secondlogger =debug,secondadpter

log4j.logger.thirdlogger =debug,thirdadpter

log4j.logger.fouthlogger =debug,fouthadpter

同時對每乙個目的地都需要進行配置,以「firstadpter」為例:

log4j.additivity.firstadpter = false

其餘的同理,在具體記錄時,可以通過不同的目的名進行匹配,如下:

logger logger1 = logger.getlogger("firstlogger");

logger1.error("log");

log4j.logger.firstlogger =debug,firstadpter

log4j.logger.secondlogger =debug,secondadpter

log4j.logger.thirdlogger =debug,thirdadpter

log4j.logger.fouthlogger =debug,fouthadpter

需要注意的是,如果根目的地會輸出所有其他目的地輸出的日誌訊息,比如所,在上面的未刪除根目的地的配置檔案下,我們在程式中使用了如下**:

logger logger1 = logger.getlogger("firstlogger");

logger1.error("log");

那麼我們不僅會在「graphpoet.log」檔案中看到「log」,同時也會在控制台中看到「log」。

參考文章:

log4j日誌框架的使用心得

log4j.properties 配置檔案內容如下。根配置,這裡我們把debug層級以及以上的資訊輸出到console和file log4j.rootlogger debug,stdout,d,e,i 輸出到console 輸出日誌到控制台 輸出debug級別的日誌到 e logs debug.lo...

log4j的一些問題

這幾天在自己配置log4j的時候總是出現了各種各樣奇怪的問題。一共遇到了2個坑 第一 log4j.properties檔案被其他同名的檔案給覆蓋了 第二 jar包的衝突 解決辦法 第乙個問題需要配置web.xml加入 log4jconfiglocation web inf classes log4j...

有關log4j的一些知識

一 log4j使用 一般情況下 log4j 總是和apache commons logging配套使用,是引入log物件的例項類名。import org.apache.commons.logging.log import org.apache.commons.logging.logfactory 推...