Spring Boot Log4j and Logback detailed configuration

Log4j

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status, 这个用于设置log4j2自身内部的信息输出, 可以不设置, 当设置成trace时, 你会看到log4j2内部各种详细输出-->
<!--monitorInterval="30":Log4j能够自动检测修改配置 文件和重新配置本身, 设置间隔秒数-->

<configuration status="WARN" monitorInterval="1800">
    <Properties>
        <!-- ==============================================公共配置============================================== -->
        <!-- 设置日志文件的目录名称 -->
        <property name="logFileName">enigma系统日志</property>
        <!-- 日志默认存放的位置, 可以设置为项目根路径下,也可指定绝对路径 -->
        <!-- 存放路径一:通用路径, window 平台 -->
        <!--<property name="basePath">C:/MyAppLogs/enigma/${logFileName}</property>-->
        <!-- 存放路径二:web工程专用, 这里把日志放在 web 项目的根目录下 -->
        <!-- <property name="basePath">${web:rootDir}/enigma logs/${logFileName}</property> -->
        <!-- 存放路径三:web工程专用, 这里把日志放在 tomcat 的 logs 目录下 -->
        <!--<property name="basePath">${sys:catalina.home}/logs/enigma/${logFileName}</property>-->
        <!-- 存放路径四:通用路径, Linux 平台 -->
        <property name="basePath">/var/AppLogs/enigma/${logFileName}</property>

        <!-- 控制台默认输出格式 -->
        <property name="console_log_pattern">[%p][%d{yyyy-MM-dd HH:mm:ss}] %l %rms: %m%n</property>
        <!-- 日志文件默认输出格式,不带行号输出(行号显示会影响日志输出性能) -->
        <!-- <property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %C.%M - %m%n</property> -->
        <!-- 日志文件默认输出格式 -->
        <property name="log_pattern">[%p][%d{yyyy-MM-dd HH:mm:ss}] %l %rms: %m%n</property>
        <!-- 日志默认切割的最小单位 -->
        <property name="every_file_size">50MB</property>
        <!-- 日志默认输出级别 -->
        <property name="output_log_level">DEBUG</property>
        <property name="encoding">UTF-8</property>

        <!-- ============================================控制台显示控制============================================ -->
        <!-- 控制台显示的日志最低级别 -->
        <property name="console_print_level">DEBUG</property>

        <!-- ===========================================所有级别日志配置=========================================== -->
        <!-- 日志默认存放路径(所有级别日志) -->
        <property name="rolling_fileName">${basePath}/all/all.log</property>
        <!-- 日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月日"建立的文件夹下面并进行压缩,作为存档 -->
        <property name="rolling_filePattern">${basePath}/all/%d{yyyy-MM}/all-%d{yyyy-MM-dd}-%i.log.zip</property>
        <!-- 日志默认同类型日志,同一文件夹下可以存放的数量,不设置此属性则默认为7个,filePattern最后要带 %i 才会生效 -->
        <property name="rolling_max">500</property>
        <!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和 filePattern 结合使用;
                如果设置为1,filePattern 是 %d{yyyy-MM-dd} 到天的格式,则间隔一天生成一个文件
                如果设置为12,filePattern 是 %d{yyyy-MM-dd-HH} 到小时的格式,则间隔12小时生成一个文件 -->
        <property name="rolling_timeInterval">1</property>
        <!-- 日志默认同类型日志,是否对封存时间进行调制,若为 true,则封存时间将以0点为边界进行调整,
                如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am -->
        <property name="rolling_timeModulate">true</property>

        <!-- ============================================Debug级别日志============================================ -->
        <!-- Debug日志默认存放路径(debug级别日志) -->
        <property name="debug_fileName">${basePath}/debug/debug.log</property>
        <!-- Debug日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
        <property name="debug_filePattern">${basePath}/debug/%d{yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.zip</property>
        <!-- Debug日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
        <property name="debug_max">100</property>
        <!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;
                如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件
                如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 -->
        <property name="debug_timeInterval">1</property>
        <!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,
                如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am -->
        <property name="debug_timeModulate">true</property>

        <!-- ============================================Info级别日志============================================ -->
        <!-- Info日志默认存放路径(Info级别日志) -->
        <property name="info_fileName">${basePath}/info/info.log</property>
        <!-- Info日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
        <property name="info_filePattern">${basePath}/info/%d{yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.zip</property>
        <!-- Info日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
        <property name="info_max">1000</property>
        <!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;
                如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件
                如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 -->
        <property name="info_timeInterval">1</property>
        <!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,
                如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am -->
        <property name="info_timeModulate">true</property>

        <!-- ============================================Warn级别日志============================================ -->
        <!-- Warn日志默认存放路径(Warn级别日志) -->
        <property name="warn_fileName">${basePath}/warn/warn.log</property>
        <!-- Warn日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
        <property name="warn_filePattern">${basePath}/warn/%d{yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.zip</property>
        <!-- Warn日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
        <property name="warn_max">1000</property>
        <!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;
                如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件
                如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 -->
        <property name="warn_timeInterval">1</property>
        <!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,
                如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am -->
        <property name="warn_timeModulate">true</property>

        <!-- ============================================Error级别日志============================================ -->
        <!-- Error日志默认存放路径(Error级别日志) -->
        <property name="error_fileName">${basePath}/error/error.log</property>
        <!-- Error日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
        <property name="error_filePattern">${basePath}/error/%d{yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.zip</property>
        <!-- Error日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
        <property name="error_max">1000</property>
        <!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;
                如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件
                如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 -->
        <property name="error_timeInterval">1</property>
        <!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,
                如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am -->
        <property name="error_timeModulate">true</property>

        <!-- ============================================Error级别日志============================================ -->
        <!-- Error日志默认存放路径(Error级别日志) -->
        <property name="druid_sql_fileName">${basePath}/druid_sql/druid_sql.log</property>
        <!-- Error日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
        <property name="druid_sql_filePattern">${basePath}/druid_sql/%d{yyyy-MM}/druid_sql-%d{yyyy-MM-dd}-%i.log.zip
        </property>
        <!-- Error日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 -->
        <property name="druid_sql_max">1000</property>
        <!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;
                如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件
                如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 -->
        <property name="druid_sql_timeInterval">1</property>
        <!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,
                如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am -->
        <property name="druid_sql_timeModulate">true</property>


    </Properties>


    <!--定义appender -->
    <appenders>
        <!-- =======================================用来定义输出到控制台的配置======================================= -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 设置控制台只输出 level 及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="${console_print_level}" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 设置输出格式,不设置默认为:%m%n -->
            <PatternLayout pattern="${console_log_pattern}"/>
        </Console>

        <!-- ================================打印root中指定的level级别以上的日志到文件================================ -->
        <RollingFile name="RollingFile" fileName="${rolling_fileName}" filePattern="${rolling_filePattern}">
            <PatternLayout charset="${encoding}" pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${rolling_timeInterval}" modulate="${warn_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <!-- 设置同类型日志,同一文件夹下可以存放的数量,如果不设置此属性则默认存放7个文件 -->
            <DefaultRolloverStrategy max="${rolling_max}"/>
        </RollingFile>

        <!-- =======================================打印DEBUG级别的日志到文件======================================= -->
        <RollingFile name="DebugFile" fileName="${debug_fileName}" filePattern="${debug_filePattern}">
            <PatternLayout charset="${encoding}" pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${debug_timeInterval}" modulate="${debug_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${debug_max}"/>
            <Filters>
                <!--不接受INFO及以上, DEBUG以下的日志信息-->
                <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>
        <!-- =======================================打印INFO级别的日志到文件======================================= -->
        <RollingFile name="InfoFile" fileName="${info_fileName}" filePattern="${info_filePattern}">
            <PatternLayout charset="${encoding}" pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${info_timeInterval}" modulate="${info_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${info_max}"/>
            <Filters>
                <!--不接受WARN及以上, INFO以下的日志信息 OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL-->
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>

        <!-- =======================================打印WARN级别的日志到文件======================================= -->
        <RollingFile name="WarnFile" fileName="${warn_fileName}" filePattern="${warn_filePattern}">
            <PatternLayout charset="${encoding}" pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${warn_timeInterval}" modulate="${warn_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${warn_max}"/>
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>

        <!-- =======================================打印ERROR级别的日志到文件======================================= -->
        <RollingFile name="ErrorFile" fileName="${error_fileName}" filePattern="${error_filePattern}">
            <PatternLayout charset="${encoding}" pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${error_timeInterval}" modulate="${error_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${error_max}"/>
            <Filters>
                <ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>

        <!-- =======================================打印druid的日志到文件======================================= -->
        <!--druid的日志记录追加器-->
        <RollingFile name="druidSqlRollingFile" fileName="${druid_sql_fileName}" filePattern="${druid_sql_filePattern}">
            <PatternLayout charset="${encoding}" pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${druid_sql_timeInterval}" modulate="${druid_sql_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${druid_sql_max}"/>
        </RollingFile>
    </appenders>

    <!--定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
        <!--建立一个默认的root的logger-->
        <root level="${output_log_level}">
            <!-- <appender-ref ref="DruidSqlFile"/>-->
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="DebugFile"/>
            <appender-ref ref="InfoFile"/>
            <appender-ref ref="WarnFile"/>
            <appender-ref ref="ErrorFile"/>
            <appender-ref ref="Console"/>
        </root>

        <!-- 设置打印sql语句配置开始,以下两者配合使用,可以优化日志的输出信息,减少一些不必要信息的输出 -->
        <!--记录druid-sql的记录-->
        <logger level="WARN" additivity="false" name="druid.sql">
            <appender-ref ref="druidSqlRollingFile"/>
        </logger>

        <logger level="WARN" additivity="false" name="druid.sql.Statement">
            <appender-ref ref="druidSqlRollingFile"/>
            <appender-ref ref="Console"/>
        </logger>

        <logger level="WARN" additivity="false" name="druid.sql.ResultSet">
            <appender-ref ref="druidSqlRollingFile"/>
        </logger>

        <logger level="WARN" additivity="false" name="druid.sql.Connection">
            <appender-ref ref="druidSqlRollingFile"/>
        </logger>

        <logger level="WARN" additivity="false" name="druid.sql.DataSource">
            <appender-ref ref="druidSqlRollingFile"/>
        </logger>

        <!-- 设置 name 包下的日志只打印 level 及以上级别的日志 -->
        <logger level="WARN" additivity="false" name="org">
            <appender-ref ref="Console"/>
        </logger>

        <logger level="WARN" additivity="false" name="springfox">
            <appender-ref ref="Console"/>
        </logger>

        <logger level="WARN" additivity="false" name="java.sql">
            <appender-ref ref="Console"/>
        </logger>

        <logger level="WARN" additivity="false" name="io.netty.util">
            <appender-ref ref="Console"/>
        </logger>

        <logger level="WARN" additivity="false" name="com.ulisesbocchio.jasyptspringboot">
            <appender-ref ref="Console"/>
        </logger>

        <logger level="WARN" additivity="false" name="net.sf.ehcache">
            <appender-ref ref="Console"/>
        </logger>

        <logger level="WARN" additivity="false" name="com.baomidou.mybatisplus">
            <appender-ref ref="Console"/>
        </logger>

    </loggers>

</configuration>

Logback

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--scan:
        当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true
    scanPeriod:
        设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。 当scan为true时,此属性生效。默认的时间间隔为1分钟
    debug:
        当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false -->

<configuration scan="true" scanPeriod="10 seconds" debug="false">
    <contextName>logback</contextName>

    <!-- 设置日志文件的目录名称 -->
    <property name="logFileName" value="Explorer系统日志"/>
    <property name="log.path" value="C:/SystemLogs/aim/${logFileName}"/>
    <property name="basePath" value="C:/SystemLogs/aim/${logFileName}"/>
    <!-- 设置字符集 -->
    <property name="encoding" value="UTF-8"/>
    <property name="fileSize" value="100MB"/>
    <property name="fileHistory" value="60"/>
    <property name="log_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>


    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(===>){faint} %clr([%-4.6L]){faint} %clr([%-10.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n ${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!-- =======================================用来定义输出到控制台的配置======================================= -->
    <!--1. 输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--<immediateFlush>true</immediateFlush>-->
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>${encoding}</charset>
        </encoder>
    </appender>

    <!-- ========================================= 打印 all 级别的日志到文件 ======================================== -->
    <appender name="all_logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${basePath}/all.log</file>
        <encoder>
            <pattern>${log_pattern}</pattern>
            <charset>${encoding}</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${basePath}/all_history/%d{yyyy-MM}/all-%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${fileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${fileHistory}</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ALL</level>
        </filter>
    </appender>

    <!-- ========================================= 打印 DEBUG 级别的日志到文件 ======================================== -->
    <appender name="debug_logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件的路径和文件名 -->
        <file>${basePath}/debug.log</file>
        <!-- 日志文档输出格式 -->
        <encoder>
            <!--[%p][%d{yyyy-MM-dd HH:mm:ss}] %l %rms: %m%n-->
            <pattern>${log_pattern}</pattern>
            <!-- 设置字符集 -->
            <charset>${encoding}</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${basePath}/debug_history/%d{yyyy-MM}/debug-%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 文件的大小,默认值是10MB -->
                <maxFileSize>${fileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>${fileHistory}</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <!-- 如果是debug就写入这条日志 -->
            <onMatch>ACCEPT</onMatch>
            <!-- 如果不是debug就禁止写入这条日志 -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- ========================================= 打印 INFO 级别的日志到文件 ========================================= -->
    <appender name="info_logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${basePath}/info.log</file>
        <encoder>
            <pattern>${log_pattern}</pattern>
            <charset>${encoding}</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${basePath}/info_history/%d{yyyy-MM}/info-%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${fileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${fileHistory}</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- ========================================= 打印 WARN 级别的日志到文件 ========================================= -->
    <appender name="warn_logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${basePath}/warn.log</file>
        <encoder>
            <pattern>${log_pattern}</pattern>
            <charset>${encoding}</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${basePath}/warn_history/%d{yyyy-MM}/warn-%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${fileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${fileHistory}</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- ========================================= 打印 ERROR 级别的日志到文件 ======================================== -->
    <appender name="error_logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${basePath}/error.log</file>
        <encoder>
            <pattern>${log_pattern}</pattern>
            <charset>${encoding}</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${basePath}/error_history/%d{yyyy-MM}/error-%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${fileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${fileHistory}</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--
        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
        以及指定<appender>。<logger>仅有一个name属性,
        一个可选的level和一个可选的addtivity属性。
        name:用来指定受此logger约束的某一个包或者具体的某一个类。
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
              如果未设置此属性,那么当前logger将会继承上级的级别。
        addtivity:是否向上级logger传递打印信息。默认是true。-->
    <logger name="org.springframework.web" level="info"/>
    <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>


    <!--
        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
        【logging.level.org.mybatis=debug logging.level.dao=debug】
     -->

    <!--
        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
        不能设置为INHERITED或者同义词NULL。默认是DEBUG
        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
    -->

    <!-- 4. 最终的策略 -->
    <!-- 4.1 开发环境:打印控制台-->
    <springProfile name="dev">
        <logger name="cn.com.codetest" level="debug"/>
    </springProfile>

    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="all_logFile"/>
        <appender-ref ref="debug_logFile"/>
        <appender-ref ref="info_logFile"/>
        <appender-ref ref="warn_logFile"/>
        <appender-ref ref="error_logFile"/>
    </root>

    <!-- 4.2 生产环境:输出到文档
    <springProfile name="pro">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="debug_logFile" />
            <appender-ref ref="info_logFile" />
            <appender-ref ref="error_logFile" />
            <appender-ref ref="warn_logFile" />
        </root>
    </springProfile> -->

</configuration>

Guess you like

Origin blog.csdn.net/qq_42700109/article/details/131936444