Spring Boot动态修改日志级别
运行在生产环境的应用通常将日志设置为INFO级别,需要调整日志级别时可以通过这几种方式实现:1 修改配置文件,重新打包发布应用;2 不修改配置文件,重启应用并增加启动参数(--logging.level=debug);上面两种方式是日常开发调试常用的,都需要重启应用。3 通过LoggingSystem对象操作应用日志级别;借助Spring Boot的日志系统对象可以实现日志级别动态调整,摘取Spr
·
运行在生产环境的应用通常将日志设置为INFO级别,需要调整日志级别时可以通过这几种方式实现:
1 修改配置文件,重新打包发布应用;
2 不修改配置文件,重启应用并增加启动参数(--logging.level=debug);
上面两种方式是日常开发调试常用的,都需要重启应用。
3 通过LoggingSystem对象操作应用日志级别;
借助Spring Boot的日志系统对象可以实现日志级别动态调整,摘取Spring Boot文档中一段话:
从最后一句话可以得到Spring Boot的日志配置是通过LoggingSystem这个接口实现的,所以我们可以借助这个接口类修改日志级别。
3.2 LoggingSystem + 接口;
@Resource
private LoggingSystem loggingSystem;
@PostMapping("/updateLoggingLevel")
public void updateLoggingLevel(String level) {
loggingSystem.setLogLevel("ROOT", LogLevel.valueOf(level));
}
需要修改日志级别时直接使用接口请求实现。
3.1 LoggingSystem + Nacos 动态配置;
@Resource
private LoggingSystem loggingSystem;
@NacosValue(value = "${logging.level.name:org.logging.test}",autoRefreshed = true)
private String loggerName;
@NacosValue(value = "${logging.level:info}",autoRefreshed = true)
private String loggerLevel;
@NacosConfigListener(dataId = "DATA_ID",groupId = "GROUP_ID")
public void onChangeValue(String value) throws BaseException {
log.info("received changed value = {}", value);
LogLevel logLevel = LogLevel.valueOf(loggerLevel.toUpperCase());
loggingSystem.setLogLevel(loggerName, logLevel);
log.info("changed {} logging level to:{}", loggerName, loggerLevel);
}
增加一个nacos配置监听器,监听日志日别相关的配置值,配置值发生变化时通过LoggingSystem接口更新。
更多推荐
已为社区贡献1条内容
所有评论(0)