springboot 在线调整日志级别
生活随笔
收集整理的這篇文章主要介紹了
springboot 在线调整日志级别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WEB應用項目生產環境一般日志級別是ERROR級別,但有時候碰到有問題的時候想看一下DEBUG級別的日志,可能需要項目重啟,單個項目還好說,像現在微服務的項目動不動就十幾個服務根本無從下手,遂研發出在線變更日志級別功能;
1、要變更級別,先清除原來的級別以及LoggerContext對象
String[] LOGGER_NAME = new String[] {"root"};LoggerContext lc = (LoggerContext) StaticLoggerBinder.getSingleton().getLoggerFactory();//清除日志for (String logName : LOGGER_NAME) {ch.qos.logback.classic.Logger logger = lc.getLogger(logName);logger.detachAppender("CallLogAppender");logger.detachAndStopAllAppenders();logger.isAdditive();}2、重新設置日志級別
//這里直接對root目錄進行所有級別調整,當然也可以視情況寫上自己的目錄 String[] LOGGER_NAME = new String[] {"root"};if (!StringUtils.hasText(level)) {level = "";}level = level.trim();CallLogAppender ca = new CallLogAppender();ca.setContext(lc);ca.setName("CallLogAppender");PatternLayoutEncoder encoder = new PatternLayoutEncoder();encoder.setCharset(UTF_8);encoder.setPattern("%date %-5level %logger- %msg%n");encoder.setContext(lc);encoder.start();ca.setEncoder(encoder);ca.start();for (String logName : LOGGER_NAME) {Logger logger = lc.getLogger(logName);switch (level.toUpperCase()) {case "OFF":logger.setLevel(Level.OFF);break;......其它級別類似以上的寫法default:logger.setLevel(Level.ERROR);break;}logger.addAppender(ca);}3、application.properties日志級別配置
logging.level.root=debug logging.level.org.apache=info logging.level.sun.net=info logging.level.com.alibaba=info注意:設置root的目錄,那么其它路徑不要在application.properties進行配置級別,否則會出現調用接口無法變更級別問題;
把第一個方法封裝到Controller中,在前臺就能直接調用后臺接口進行在線級別變更了,當然微服務應用很多,這個可以通過注冊中心獲取到所有實例進行遍歷,這都是小問題了;
總結
以上是生活随笔為你收集整理的springboot 在线调整日志级别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提示修复缺少D3DCompiler_47
- 下一篇: 计算机原理-浮点数存储