Title

logback配置文件

logback 取代 log4j 的理由:Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。

  • log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。

  • logback 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="org.springframework.web" level="INFO"/>
    <logger name="org.springboot.sample" level="TRACE"/>

    <!-- 开发、测试环境 -->
    <springProfile name="dev,test">
        <logger name="org.springframework.web" level="INFO"/>
        <logger name="org.springboot.sample" level="INFO"/>
        <logger name="com.zl" level="DEBUG"/>
    </springProfile>

    <!-- 生产环境 -->
    <springProfile name="prod">
        <logger name="org.springframework.web" level="ERROR"/>
        <logger name="org.springboot.sample" level="ERROR"/>
        <logger name="com.zl" level="ERROR"/>
    </springProfile>

</configuration>

在 application.yml 指定日志配置文件

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl # 配置mybatis日志打印
logging:
  config: classpath:logback-dev.xml # 指定logback配置文件
  file:
    path: D:/log # 指定日志输出的目录
  • logback 的配置文件详细说明:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <property name="LOG_HOME" value="D:\log"/>
    <property name="LOG_PREFIX" value="log-info"/>

    <springProperty scope="context" name="appName" source="spring.application.name"/>
    <!--
    %p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
    %r:输出自应用启动到输出该日志讯息所耗费的毫秒数
    %t:输出产生该日志事件的线程名
    %f:输出日志讯息所属的类别的类别名
    %c:输出日志讯息所属的类的全名
    %d:输出日志时间点的日期或时间,指定格式的方式: %d{yyyy-MM-dd HH:mm:ss}
    %l:输出日志事件的发生位置,即输出日志讯息的语句在他所在类别的第几行。
    %m:输出代码中指定的讯息,如log(message)中的message
    %n:输出一个换行符号
    -->
    <!--
    Appender: 设置日志信息的去向,常用的有以下几个
    ch.qos.logback.core.ConsoleAppender (控制台)
    ch.qos.logback.core.rolling.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新文件)
    ch.qos.logback.core.FileAppender (文件,不推荐使用)
    -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--&lt;!&ndash; 被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建 &ndash;&gt;-->
        <file>${LOG_HOME}/${LOG_PREFIX}-${appName}-%d{yyyy-MM-dd}.log</file>
        <!--RollingFileAppender:-->
        <!--滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。-->
        <!--<rollingPolicy>:当发生滚动时,决定RollingFileAppender 的行为,涉及文件移动和重命名。-->
        <!--TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--<fileNamePattern>:
            必要节点,包含文件名及“%d”转换符, “%d”可以包含一个 java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。
            如果直接使用 %d,默认格式是 yyyy-MM-dd。RollingFileAppender 的file字节点可有可无,通过设置file,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变;
            如果没设置file,活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次。“/”或者“\”会被当做目录分隔符。-->
            <!--<fileNamePattern>${LOG_HOME}/daily/${appName}-log.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>-->
            <!--压缩文件的保存路径以及保存格式,这里必须将文件压缩,.%i 必须有。如果按上面的配置会报错-->
            <fileNamePattern>${LOG_HOME}/daily/${appName}-log.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
            <TimeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--保存文件的大小,超过该大小自动创建新文件。旧文件压缩保存到daily目录下-->
                <MaxFileSize>20MB</MaxFileSize>
            </TimeBasedFileNamingAndTriggeringPolicy>
            <!--&lt;!&ndash; 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,如果是6,则只保存最近6天的文件,删除之前的旧文件 包括压缩文件 &ndash;&gt;-->
            <!--&lt;!&ndash; 每产生一个日志文件,该日志文件的保存期限天数 &ndash;&gt;-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!--<encoder>:对记录事件进行格式化。-->
        <encoder>
            <!--格式化输出:%d表示日期,后面跟时间格式,默认%data{yyyy-MM-dd},%thread表示线程名, %msg:日志消息,%n是换行符-->
            <pattern>
                ${CONSOLE_LOG_PATTERN}
                <!--                %(console-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger) - -->
                <!--                %cyan(%msg%n)-->
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                <!-- 使用默认输出(spring-boot-[tag].RELEASE.jar/org/springframework/boot/logging/logback/defaults.xml) -->
                ${CONSOLE_LOG_PATTERN}
                <!--                %(console-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger) - -->
                <!--                %cyan(%msg%n)-->
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <logger name="org.mybatis" level="debug"/>
    <logger name="org.apache.ibatis" level="debug"/>
    <springProfile name="local,dev">
        <!--root是默认的logger 这里设定输出级别是info-->
        <root level="INFO">
            <!--定义了两个appender,日志会通过往这两个appender里面写-->
            <appender-ref ref="FILE"/>
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>
    <springProfile name="test,uat">
        <root level="INFO">
            <appender-ref ref="FILE"/>
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>
    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="FILE"/>
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>
</configuration>
posted @ 2021-12-13 13:00  快乐小洋人  阅读(519)  评论(0编辑  收藏  举报