通過jmx動態修改logback的日誌級別
阿新 • • 發佈:2019-01-01
應用上線後常常會面對這樣一種困境,即,如果把日誌級別開得太高,那麼當系統出現問題時不好查,如果把日誌級別定得太低,那麼硬碟很可能很快就被撐爆了。
這時候我們常常選擇先將日誌級別定高點,當出現問題時,再調低。大部分時候人們習慣的做法是修改logback.xml配置檔案,然後重啟應用。
這聽起來當然有問題,我應用跑得好好的,使用者用著好好的,為什麼要重啟呢,誰來應對重啟時客戶的怒火呢?
logback的開發者想得周到啦,他們為使用者提供了一種動態修改日誌級別的能力,而不需要你重啟應用。下面的內容僅作為一次簡單嘗試:
修改logback.xml檔案
... <jmxConfigurator
實際上我們只是新增了一行
<jmxConfigurator/>
啟動應用,觀察日誌
2018-04-02 19:23:50 INFO [metrics-logger-reporter-thread-1] [com.codahale.metrics.Slf4jReporter:214] - .... 2018-04-02 19:23:50 INFO [metrics-logger-reporter-thread-1] [com.codahale.metrics.Slf4jReporter:183] - ... 2018-04-02 19:24:00 INFO [qbScheduler-4] [com.gzcb.creditcard.fdp.utils.ReturnFileTasksScheduler:34] - 定時掃描返回檔案開始執行... 2018-04-02 19:24:00 INFO [qbScheduler-4] [com.gzcb.creditcard.fdp.utils.ReturnFileTasksScheduler:37] - 當前Web節點不是master,跳過... ...
啟動jconsole, 連線應用,選擇MBean
找到
ch.qos.logback.classic.default
目錄下的類ch.qos.logback.classic.jmx.JMXConfigurator
選擇操作,選擇setLoggerLevel,輸入引數,第一個是loggerName,第二個是loggerLevel,點選按鈕
觀察日誌
2018-04-02 19:30:27 DEBUG [DefaultQuartzScheduler_QuartzSchedulerThread] [org.quartz.core.QuartzSchedulerThread:276] - ... 2018-04
我們發現本來全是info的日誌,突然變成有debug級別輸出了。如果再次修改loggerLevel為info,debug日誌又消失了。