做實驗時需要將程式產生的異常記錄到日誌中,因此用到了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
那麼我們不僅會在「graphpoet.log」檔案中看到「log」,同時也會在控制台中看到「log」。logger logger1 = logger.getlogger("firstlogger");
logger1.error("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 推...