forked from rongchao/epmet-cloud-rizhao
				
			
				 3 changed files with 61 additions and 7 deletions
			
			
		@ -0,0 +1,55 @@ | 
				
			|||||
 | 
					package com.epmet.commons.tools.log.controller; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					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; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.RequestParam; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.RestController; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/** | 
				
			||||
 | 
					 * logback日志级别动态切换 | 
				
			||||
 | 
					 * 请求路径 .../log/setlevel | 
				
			||||
 | 
					 * 根据参数(level、packageName),设置某一个包或者具体的某一个类的日志打印级别 | 
				
			||||
 | 
					 * | 
				
			||||
 | 
					 * @Auther: zhangyong | 
				
			||||
 | 
					 * @Date: 2020-07-03 11:09 | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@RequestMapping("/log") | 
				
			||||
 | 
					@RestController | 
				
			||||
 | 
					public class LogbackController { | 
				
			||||
 | 
						private org.slf4j.Logger log = LoggerFactory.getLogger(LogbackController.class); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						/** | 
				
			||||
 | 
						 * logback动态修改包名的日志级别  排查完问题记得改回原来的级别 | 
				
			||||
 | 
						 * | 
				
			||||
 | 
						 * @param level       日志级别 | 
				
			||||
 | 
						 * @param packageName 包名或类名 | 
				
			||||
 | 
						 * @return 修改后的日志级别 | 
				
			||||
 | 
						 */ | 
				
			||||
 | 
						@GetMapping("/setlevel") | 
				
			||||
 | 
						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"); | 
				
			||||
 | 
								} else { | 
				
			||||
 | 
									logger = loggerContext.getLogger(packageName); | 
				
			||||
 | 
								} | 
				
			||||
 | 
								Level preLevel = logger.getLevel(); | 
				
			||||
 | 
								logger.setLevel(Level.toLevel(level)); | 
				
			||||
 | 
								log.info("动态修改日志级别由【{}】 修改为【{}】", preLevel, logger.getLevel()); | 
				
			||||
 | 
								return String.valueOf(logger.getLevel()); | 
				
			||||
 | 
							} catch (Exception e) { | 
				
			||||
 | 
								log.error("动态修改日志级别失败", e); | 
				
			||||
 | 
							} | 
				
			||||
 | 
							return null; | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue