配置中心
配置成json格式便于扩展,可以针对不同日志类型进行等级控制
[{
"name":"root",
"level":"debug"
},{
"name":"com.jdd",
"level":"info"
}]
代码实现
/**
* @description: 日志配置
*/
@Component("logConfig")
public class LogConfig {
private final static Logger LOGGER = LoggerFactory.getLogger(LogConfig.class);
private List<LogConfigVo> configVos;
//使用方法注解,驱动方法变动
@ConfigValue("log.config")
public void onchangeLogConfig(String json) {
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
if (StringUtils.isEmpty(json)) return;
try {
configVos = JSON.parseArray(json, LogConfigVo.class);
} catch (Exception e) {
LOGGER.error("[LogConfig] update log level error.", e);
}
//批量更新日志等级,这里按照name更新level
Optional.ofNullable(configVos).ifPresent(x -> {
x.forEach(item -> {
Logger logger = loggerContext.getLogger(item.getName());
((ch.qos.logback.classic.Logger) logger).setLevel(Level.toLevel(item.getLevel(), Level.INFO));
});
});
}
}