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