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

  • 相关阅读:
    动态表单功能
    IDEA2019版Run Dashboard调出方案
    js页面传递参数为中文乱码问题解决方法
    layui 一行多列控件时使用table布局
    npm 安装包失败 --- 清除npm缓存
    解析数据库连接字符串 (将Data Source、Initial Catalog、User ID、Password取出)
    SQL SERVER 存储过程语法
    mvc5 跨域访问
    钟表
    MVC session过期如何处理跳转(转)
  • 原文地址:https://www.cnblogs.com/lyh233/p/15069187.html
Copyright © 2011-2022 走看看