動態修改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";
}
}