1. 程式人生 > >動態修改logback配置的三種方法

動態修改logback配置的三種方法

方案一 :通過jsconsole動態修改日誌級別

 

1.logback.xml configuration 標籤裡面 新增<jmxConfigurator />

 

<configuration >

    <jmxConfigurator />

</configuration>

 

2.啟動 jconsole,連線應用,具體怎麼連自行百度

 

 

 

3.選擇Mbean 找到 ch.qos.logback.classic.default目錄下的類ch.qos.logback.classic.jmx.JMXConfigurator

4.選擇操作,選擇setLoggerLevel,輸入引數,第一個是loggerName,第二個是loggerLevel,點選按鈕

 

 

5.檢視控制檯,具體日誌自行檢視

方案二:動態態修改日誌配置檔案

修改logback.xml配置檔案:在configuration根節點配置屬性scan和scanPeriod,scan為true時,配置檔案被修改會被重新載入,scanPeriod定義了掃描檔案變化的週期,預設60000毫秒,即一分鐘。這種做法的好處是不用自己寫修改日誌級別的邏輯;壞處是要手動更改配置檔案,排錯完成後需改回原來的配置。

 

<configuration scan="true" scanPeriod="60000">

 

</configuration>

 

 

 

方案三:自定義介面修改日誌級別

 

定義動態修改日誌級別的介面:這種方法的好處是不用修改配置檔案,排錯後再次呼叫介面把日誌級別修改回去;壞處是需要在程式碼中寫死指定哪些包要修改日誌級別

 

 

@RestController

public class LogController {

    private static Logger logger = LoggerFactory.getLogger(LogController.class);

 

    @RequestMapping(value = "logLevel/{logLevel}")

    public String changeLogLevel(@PathVariable("logLevel") String logLevel) {

 

        try {

            LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();

            loggerContext.getLogger("org.mybatis").setLevel(Level.valueOf(logLevel));

            loggerContext.getLogger("org.springframework").setLevel(Level.valueOf(logLevel));

        } catch (Exception e) {

            logger.error("動態修改日誌級別出錯", e);

            return "fail";

        }

 

        return "success";

    }

}