运行在生产环境的应用通常将日志设置为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接口更新。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐