zoukankan      html  css  js  c++  java
  • SpringBoot中,不同环境的日志配置

    1、背景

    日志的配置,不同的环境对于日志的处理方式也是不同的。例如开发环境,我们需要日志打印到控制台,可以及时的调试,但是没有太大的必要输出到文件。但是呢生产环境,一般只需要序列化到文件。而不需要输出到控制台。而且生产环境的日志打印级别一般都是在 INFO 以上,而开发环境肯定是 DEBUG。

    2、以前对于不同环境的日志处理方式,yaml配置

    通过不同的 profile 去加载不同的日志配置文件

    logging:
      config: classpath:logback-${spring.profiles.active}.xml

    这样的弊端显而易见,需要创建,维护多个不同的日志文件。

    3、使用 springProfile

    参考: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#_environment_properties 21

    可以在 spring-logback.xml 中的 configuration 节点下配置 springProfile 节点

    它有一个name属性, 只有在当前profile环境下才会加载该节点下的内容

    <springProfile name="staging"></springProfile>

    demo

    <configuration>
        .... 忽略其他的配置
    
        <!-- 控制台输出 -->
        <appender name="console"
            class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            </encoder>
        </appender>
    
        <!-- 开发环境 -->
        <springProfile name="dev">
            <root level="DEBUG">
                <appender-ref ref="console" />
            </root>
        </springProfile>
        
        <!-- 生产环境 -->
        <springProfile name="pro">
            <!-- 输出到文件 -->
            <appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>production.log</file>
                <rollingPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                    <maxFileSize>100MB</maxFileSize>
                    <fileNamePattern>%d{yyyy-MM-dd}-%i.zip</fileNamePattern>
                    <maxHistory>60</maxHistory>
                    <totalSizeCap>1GB</totalSizeCap>
                </rollingPolicy>
                <encoder>
                    <pattern>${FILE_LOG_PATTERN}</pattern>
                </encoder>
            </appender>
            <root level="DEBUG">
                <appender-ref ref="rolling" />
            </root>
        </springProfile>
    </configuration>

    还支持表达式

    只有 spring.profiles.active=staging 才会激活

    <springProfile name="staging"></springProfile>

    只有 spring.profiles.active=staging 或着 spring.profiles.active=dev 才会激活

    <springProfile name="dev | staging"></springProfile>

    只有不是 spring.profiles.active=production 才会激活

    <springProfile name="!production"></springProfile>

    通过配置 springProfile,只需要维护一个日志文件,就可以在不同的环境下,使用不同的日志配置。

    摘自https://springboot.io/t/topic/757

  • 相关阅读:
    easy ui 表单ajax和from两种提交数据方法
    easy ui 下拉级联效果 ,下拉框绑定数据select控件
    easy ui 下拉框绑定数据select控件
    easy ui 异步上传文件,跨域
    easy ui 菜单和按钮(Menu and Button)
    HTTP 错误 404.3
    EXTJS4.2 后台管理菜单栏
    HTML 背景图片自适应
    easy ui 表单元素input控件后面加说明(红色)
    EXTJS 4.2 添加滚动条
  • 原文地址:https://www.cnblogs.com/lyh233/p/15069187.html
Copyright © 2011-2022 走看看