使用logback輕鬆管理日誌

2021-09-02 04:10:17 字數 1582 閱讀 6777

最近才開始在專案中使用logback,有一種相見恨晚的感覺,因為它很輕易的滿足了我的幾個需求:

1. 配置簡單,易於上手

2. 乙個日誌檔案中只能某乙個級別的日誌

3. 乙個類中可以指定多個不同的日誌,並且生成的每個日誌檔案中只包含其本身的內容

4. 可以關閉或者開啟某幾個包的日誌,並且可以設定不同的包使用不同的日誌級別。

一、易用性

logback的易用性不用多講,只需要通過下面兩行就可以在console中輸出日誌:

logger debuglogger = logge***ctory.getlogger(myclass.class);
logger.info("this is a log");

程式執行時,logback會查詢預設的配置檔案logback.xml或者logback-test.xml檔案,如果沒有找到它就會使用預設的配置,將日誌列印到console中。下面是乙個簡單配置檔案(

ch.qos.logback.classic.encoder.patternlayoutencoder by default -->

%d [%thread] %-5level %logger - %msg%n

二、日誌級別限制

中的filter來嚴格限制日誌的輸出級別:

info

accept

deny

上面的設定中只會在檔案中出現級別為info的日誌內容。

三、同乙個類中包含不同的日誌

有時候乙個類中可能要求列印不同的日誌資訊,例如有的用來除錯,有的用來記錄程式執行中的某些引數的變化等等。這時候可以通過下面的語句宣告不同的日誌:

logger debuglogger = logge***ctory.getlogger(myclass.class);

logger monitorlogger = logge***ctory.getlogger("monitor");

然後在配置檔案中分別指定不同的輸出檔案(debuglogger使用預設的配置):

%d : %m%n

info

$/sensitive.log.%d

這裡通過設定additivity="false"禁止monitor裡的內容向上傳遞,否則會同時顯示在預設的日誌中。

四、精確控制日誌的應用範圍

在程式除錯中,經常出現的情況是:錯誤只在某乙個或者幾個類或者包裡,所以只需要開啟這幾個類或者包裡的debug級別的log。在以前的專案,使用spring和hibernate時,一旦開啟debug級別的log,程式本身的debug資訊就會被spring和hibernate的大量日誌淹沒,大大降低了除錯的效率。而logback讓這一切變的簡單起來了:

這一行就將org包下面的所有日誌級別設為了error,不會再打擾我們的debug。

使用logback輕鬆管理日誌

最近才開始在專案中使用logback,有一種相見恨晚的感覺,因為它很輕易的滿足了我的幾個需求 1.配置簡單,易於上手 2.乙個日誌檔案中只能某乙個級別的日誌 3.乙個類中可以指定多個不同的日誌,並且生成的每個日誌檔案中只包含其本身的內容 4.可以關閉或者開啟某幾個包的日誌,並且可以設定不同的包使用不...

dubbo使用logback輸出日誌

最近在做dubbo協議擴充套件,發現dubbo錯誤資訊沒有列印。於是跟蹤原始碼發現,dubbo預設使用log4j作為日誌輸出,而我們專案是採用logback來輸出日誌。採取以下方式來切換成slf4j 1 設定jvm啟動引數來指定slf4j 這種方式無論是spring容器還是web容器均可適用 2 w...

logback日誌詳解

logback日誌配置 一 日誌級別已經輸出規則 日誌級別從高到低 off fatal error warn info debug trace all 日誌輸出規則 根據當前root 級別,日誌輸出時,級別高於root預設的級別時會輸出。二 根節點包含的屬性 scan 當此屬性設定為true時,配置...