• springboot logback 详细配置


    application.properties配置文件

    # 日志配置 
    # 环境变量配置
    spring.profiles.active=dev
    # 日志路径配置 对应logback中的 ${LOG_PATH:-.}

    logging.path=F:/log

    开始配置

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration debug="false">
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
        <property name="LOG_HOME" value="${LOG_PATH:-.}" />
        <!-- 控制台输出设置 -->
        <!-- 彩色日志格式,magenta:洋红,boldMagenta:粗红,yan:青色,·⊱══> -->
        <property name="CONSOLE_LOG_PATTERN" value="%boldMagenta([%d{yyyy-MM-dd HH:mm:ss.SSS}]) %cyan([%X{requestId}]) %boldMagenta(%-5level) %blue(%logger{15}) %red([%thread]) %magenta(·⊱══>) %cyan(%msg%n)"/>
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
                <charset>utf8</charset>
            </encoder>
        </appender>
        <!-- 按天输出日志设置 -->
        <appender name="DAY_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件输出的文件名 -->
                <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}_SystemConfig.log</FileNamePattern>
                <!-- 日志文件保留天数 -->
                <MaxHistory>7</MaxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>             <!-- 设置拦截的对象为INFO级别日志 -->
                <onMatch>ACCEPT</onMatch>       <!-- 当遇到了INFO级别时,启用改段配置 -->
                <onMismatch>DENY</onMismatch>   <!-- 没有遇到INFO级别日志时,屏蔽改段配置 -->
            </filter>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            </encoder>
            <!-- 日志文件最大的大小 -->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>50MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
        <!-- 按天输出ERROR级别日志设置 -->
        <appender name="DAY_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件输出的文件名 -->
                <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}_SystemConfig_error.%i.log</FileNamePattern>
                <!-- 日志文件保留天数 -->
                <MaxHistory>7</MaxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>            <!-- 设置拦截的对象为ERROR级别日志 -->
                <onMatch>ACCEPT</onMatch>       <!-- 当遇到了ERROR级别时,启用改段配置 -->
                <onMismatch>DENY</onMismatch>   <!-- 没有遇到ERROR级别日志时,屏蔽改段配置 -->
            </filter>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            </encoder>
            <!-- 日志文件最大的大小 -->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>50MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
    
        <!-- 日志输出级别,OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level -->
        <logger name="com.sand" level="INFO"/>
        <logger name="com.apache.ibatis" level="INFO"/>
        <logger name="java.sql.Statement" level="INFO"/>
        <logger name="java.sql.Connection" level="INFO"/>
        <logger name="java.sql.PreparedStatement" level="INFO"/>
        <logger name="org.springframework" level="WARN"/>
        <logger name="com.baomidou.mybatisplus" level="WARN"/>
    
        <!-- 开发环境:打印控制台和输出到文件 -->
        <springProfile name="dev">
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="DAY_FILE"/>
                <appender-ref ref="DAY_ERROR_FILE"/>
            </root>
        </springProfile>
    
        <!-- 生产环境:打印控制台和输出到文件 -->
        <springProfile name="pro">
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="DAY_FILE"/>
                <appender-ref ref="DAY_ERROR_FILE"/>
            </root>
        </springProfile>
    </configuration>

    需要调整的地方

    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>50MB</MaxFileSize>
    </triggeringPolicy>

    这段去掉,如果想限制每个日志文件的大小可以这样

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--日志文件输出的文件名-->
        <FileNamePattern>${LOG_HOME}/platform_logger_error_%d{yyyy-MM-dd}.%i.log</FileNamePattern>
        <!--日志文件保留天数-->
        <MaxHistory>10</MaxHistory>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>

    注意日志文件后面的%i;

    调整后的配置

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="${LOG_PATH:-.}" />
    <!-- 控制台输出设置 -->
    <!-- 彩色日志格式,magenta:洋红,boldMagenta:粗红,yan:青色,·⊱══> -->
    <property name="CONSOLE_LOG_PATTERN" value="%boldMagenta([%d{yyyy-MM-dd HH:mm:ss.SSS}]) %cyan([%X{requestId}]) %boldMagenta(%-5level) %blue(%logger{15}) %red([%thread]) %magenta(·⊱══>) %cyan(%msg%n)"/>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
    <pattern>${CONSOLE_LOG_PATTERN}</pattern>
    <charset>utf8</charset>
    </encoder>
    </appender>
    <!-- 按天输出日志设置 -->
    <appender name="DAY_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 日志文件输出的文件名 -->
    <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}_SystemConfig.%i.log</FileNamePattern>
    <!-- 日志文件保留天数 -->
    <MaxHistory>7</MaxHistory>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>50MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>INFO</level> <!-- 设置拦截的对象为INFO级别日志 -->
    <onMatch>ACCEPT</onMatch> <!-- 当遇到了INFO级别时,启用改段配置 -->
    <onMismatch>DENY</onMismatch> <!-- 没有遇到INFO级别日志时,屏蔽改段配置 -->
    </filter>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    </appender>
    <!-- 按天输出ERROR级别日志设置 -->
    <appender name="DAY_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 日志文件输出的文件名 -->
    <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}_SystemConfig_error.%i.log</FileNamePattern>
    <!-- 日志文件保留天数 -->
    <MaxHistory>7</MaxHistory>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>50MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>ERROR</level> <!-- 设置拦截的对象为ERROR级别日志 -->
    <onMatch>ACCEPT</onMatch> <!-- 当遇到了ERROR级别时,启用改段配置 -->
    <onMismatch>DENY</onMismatch> <!-- 没有遇到ERROR级别日志时,屏蔽改段配置 -->
    </filter>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    </appender>

    <!-- 日志输出级别,OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level -->
    <logger name="com.sand" level="INFO"/>
    <logger name="com.apache.ibatis" level="INFO"/>
    <logger name="java.sql.Statement" level="INFO"/>
    <logger name="java.sql.Connection" level="INFO"/>
    <logger name="java.sql.PreparedStatement" level="INFO"/>
    <logger name="org.springframework" level="WARN"/>
    <logger name="com.baomidou.mybatisplus" level="WARN"/>

    <!-- 开发环境:打印控制台和输出到文件 -->
    <springProfile name="dev">
    <root level="INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="DAY_FILE"/>
    <appender-ref ref="DAY_ERROR_FILE"/>
    </root>
    </springProfile>

    <!-- 生产环境:打印控制台和输出到文件 -->
    <springProfile name="pro">
    <root level="INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="DAY_FILE"/>
    <appender-ref ref="DAY_ERROR_FILE"/>
    </root>
    </springProfile>
    </configuration>
  • 相关阅读:
    非常牛的实现三个数交换
    assert后面如果是假则程序崩溃
    python三元操作符
    三种方法划分成绩等级
    爱因斯坦难题
    打印奇数
    判断给到的年份是否为闰年
    【bzoj1895】Pku3580 supermemo Splay
    【bzoj1050】[HAOI2006]旅行comf 并查集
    【bzoj4002】[JLOI2015]有意义的字符串 数论+矩阵乘法
  • 原文地址:https://www.cnblogs.com/abel-he/p/springboot_logback.html
Copyright © 2020-2023  润新知