|
|
@ -1,8 +1,8 @@ |
|
|
|
package com.epmet.commons.tools.log.controller; |
|
|
|
|
|
|
|
import ch.qos.logback.classic.LoggerContext; |
|
|
|
import ch.qos.logback.classic.Logger; |
|
|
|
import ch.qos.logback.classic.Level; |
|
|
|
import ch.qos.logback.classic.Logger; |
|
|
|
import ch.qos.logback.classic.LoggerContext; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.web.bind.annotation.GetMapping; |
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController; |
|
|
|
* logback日志级别动态切换 |
|
|
|
* 请求路径 .../log/setlevel |
|
|
|
* 根据参数(level、packageName),设置某一个包或者具体的某一个类的日志打印级别 |
|
|
|
* |
|
|
|
* @Auther: zhangyong |
|
|
|
* @Date: 2020-07-03 11:09 |
|
|
|
*/ |
|
|
@ -23,27 +24,32 @@ public class LogbackController { |
|
|
|
private org.slf4j.Logger log = LoggerFactory.getLogger(LogbackController.class); |
|
|
|
|
|
|
|
/** |
|
|
|
* logback动态修改包名的日志级别 |
|
|
|
* logback动态修改包名的日志级别 排查完问题记得改回原来的级别 |
|
|
|
* |
|
|
|
* @param level 日志级别 |
|
|
|
* @param packageName 包名 |
|
|
|
* @return 当前的日志级别 |
|
|
|
* @throws Exception |
|
|
|
* @param packageName 包名或类名 |
|
|
|
* @return 修改后的日志级别 |
|
|
|
*/ |
|
|
|
@GetMapping("/setlevel") |
|
|
|
public String updateLogbackLevel( @RequestParam(value="level") String level, |
|
|
|
@RequestParam(value="packageName",defaultValue = "-1") String packageName) throws Exception { |
|
|
|
LoggerContext loggerContext =(LoggerContext) LoggerFactory.getILoggerFactory(); |
|
|
|
log.info("动态修改日志级别入参, 日志级别level:", level); |
|
|
|
log.info("动态修改日志级别入参, 包名packageName:", packageName); |
|
|
|
Logger logger= null; |
|
|
|
if("-1".equals(packageName)) { |
|
|
|
public String updateLogbackLevel(@RequestParam(value = "level") String level, |
|
|
|
@RequestParam(value = "packageName", defaultValue = "-1") String packageName) { |
|
|
|
try { |
|
|
|
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); |
|
|
|
log.info("动态修改日志级别入参, 日志级别level:{},包名packageName:{}", level, packageName); |
|
|
|
Logger logger = null; |
|
|
|
if ("-1".equals(packageName)) { |
|
|
|
// 默认值-1,更改全局日志级别;否则按传递的包名或类名修改日志级别。
|
|
|
|
logger= loggerContext.getLogger("root"); |
|
|
|
logger = loggerContext.getLogger("root"); |
|
|
|
} else { |
|
|
|
logger= loggerContext.getLogger(packageName); |
|
|
|
logger = loggerContext.getLogger(packageName); |
|
|
|
} |
|
|
|
Level preLevel = logger.getLevel(); |
|
|
|
logger.setLevel(Level.toLevel(level)); |
|
|
|
log.info("动态修改日志级别, 修改后, 当前的日志级别", String.valueOf(logger.getLevel())); |
|
|
|
log.info("动态修改日志级别由【{}】 修改为【{}】", preLevel, logger.getLevel()); |
|
|
|
return String.valueOf(logger.getLevel()); |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("动态修改日志级别失败", e); |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|