• Spring Boot log4j多环境日志级别的控制


      之前介绍了在《Spring boot中使用log4j》,仅通过log4j.properties对日志级别进行控制,对于需要多环境部署的环境不是很方便,可能我们在开发环境大部分模块需要采用DEBUG级别,在测试环境可能需要小部分采用DEBUG级别,而在生产环境时我们又希望采用INFO级别。这个时候,我们要自己手工编辑log4j.properties文件来调整日志级别,不论在版本库中默认保存哪个环境的级别设定,都会增加其他环境使用人员的工作量,虽然很细微,但是手工修改总不是一件很好的选择,难免会发现修改后误提交等问题。

      我们可以采用springboot多环境参数配置的方案加以解决

      先创建几个配置文件:

    • application-dev.properties:开发环境
    • application-test.properties:测试环境
    • application-prod.properties:生产环境

      在application.properties中添加配置spring.profiles.active=dev,默认激活application-dev.properties配置)

      application-dev.propertiesapplication-test.properties配置文件中添加日志级别定义:logging.level.com.ysl=DEBUG

      application-prod.properties配置文件中添加日志级别定义:logging.level.com.ysl=INFO

      通过上面的定义,根据logging.level.com.ysl在不同环境的配置文件中定义了不同的级别,但是我们已经把日志交给了log4j管理,看看我们log4j.properties中对com.didispace包下的日志定义是这样的,固定定义了DEBUG级别,并输出到名为didifile定义的appender中。

    # com.ysl包下的日志配置
    log4j.category.com.ysl=DEBUG, didifile
    
    # com.ysl下的日志输出
    log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.didifile.file=logs/my.log
    log4j.appender.didifile.DatePattern='.'yyyy-MM-dd
    log4j.appender.didifile.layout=org.apache.log4j.PatternLayout
    log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n

      我们需要将DEBUG替换成application-{profile}.properties配置文件中定义logging.level.com.didispace即可,所以配置变为如下内容:

    # com.ysl包下的日志配置
    log4j.category.com.ysl=${logging.level.com.didispace}, didifile
    
    # com.ysl下的日志输出
    log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.didifile.file=logs/my.log
    log4j.appender.didifile.DatePattern='.'yyyy-MM-dd
    log4j.appender.didifile.layout=org.apache.log4j.PatternLayout
    log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n

      到这里我们已经完成了所有配置工作,我们可以通过运行单元测试,然后看my.log文件中输出的日志内容。通过修改默认的application-dev.properties配置的日志级别为INFO,再运行单元测试的DEBUG内容是否被输出到了my.log中验证参数是否被正确引用了。对于不同环境的使用人员也不需要改变代码或打包文件,只需要通过执行命令中参加参数即可,比如我想采用生产环境的级别,那么我可以这样运行应用:

    java -jar xxx.jar --spring.profiles.active=prod
  • 相关阅读:
    python基础练习题(输入三个整数x,y,z,请把这三个数由小到大输出)
    python基础练习题(一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?)
    python基础练习题(九九乘法表)
    四步测试设计法—摘自《测试架构师修炼之道》
    砍价活动风控的跟踪记录
    C#窗口程序CPU占用高的原因和解决方法(转)
    C# 开启一个新线程
    C# 在关闭窗口程序时执行一些操作
    关于在Linux下执行程序时,需要配置路径的/etc/ld.so.conf详解【转】
    QT新建窗体程序,出现错误 unkown type name ‘QApplication’ 和 unkown type name ‘MainWindow’解决方法
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8676015.html
Copyright © 2020-2023  润新知