经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
spring boot线上日志级别动态调整的配置步骤
来源:jb51  时间:2022/3/1 17:40:15  对本文有异议

前言

日志模块是每个项目中必须的,用来记录程序运行中的相关信息。一般在开发环境下使用DEBUG级别的日志输出,为了方便查看问题,而在线上一般都使用INFO级别的日志,主要记录业务操作的日志。那么问题来了,当线上环境出现问题希望输出DEBUG日志信息辅助排查的时候怎么办呢?修改配置文件,重新打包然后上传重启线上环境,之前确实是这么做的。下面会介绍使用动态调整线上日志级别来解决这个问题。

正文

spring boot版本:1.5.7

实现起来超级简单,使用spring boot自带的LoggingSystem的api来动态设置日志级别,当然的项目需要提供动态调整的接口,来达动态调整的目的。不过博主项目使用了Apollo配置中心,利用其配置动态生效的特性,soso就搞定了,代码如下

  1. @Service
  2. public class DynamicLoggersConfig{
  3. Logger logger= LoggerFactory.getLogger(getClass());
  4. @ApolloConfig
  5. private Config config;
  6. private final static String LoggerTag="logging.level.";
  7. private final LoggingSystem loggingSystem;
  8. public DynamicLoggersConfig(LoggingSystem loggingSystem) {
  9. Assert.notNull(loggingSystem, "LoggingSystem must not be null");
  10. this.loggingSystem = loggingSystem;
  11. }
  12. @ApolloConfigChangeListener
  13. private void configChangeListter(ConfigChangeEvent changeEvent){
  14. SetkeyNames=config.getPropertyNames();
  15. for (String key:keyNames){
  16. if (StringUtils.containsIgnoreCase(key,LoggerTag)){
  17. String strLevel=config.getProperty(key,"info");
  18. LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
  19. loggingSystem.setLogLevel(key.replace(LoggerTag,""),level);
  20. logger.info("{}:{}",key,strLevel);
  21. }
  22. }
  23. }
  24. }

配置

和在spring环境下正常配置日志级别一样配置即可,如

  1. logging.level.org.springframework = info
  2. logging.level.com.yudianbank.sales = debug
  3. logging.level.org.hibernate = info

如上代表spring体系工具开启INFO级别日志,业务系统开启DEBUG级别日志,hibernate开启INFO级别日志

文末结语

动态日志输出看似小功能,却能解决非常大的问题。各种环境bug排除都少不了看日志输出。文件提到的Apollo是携程开源的配置中心项目,顺道推广下,感谢携程开源给了我们这么好的产品。项目地址如下

Apollo项目地址:https://github.com/ctripcorp/apollo

以上就是spring boot线上日志级别动态调整的配置步骤的详细内容,更多关于spring boot线上日志级别动态调整的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号