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