logback 配置

今天接到个需求,项目要对接日志平台,需要完善项目的日志。本来想着这是很简单的事嘛,因为我之前就整理过logbcak的配置文件,直接拿过来就可以用啦。理想很美好,现实很残酷,我的之前整理的项目放在了gitHub上,公司的网又上不去gitHub。
没办法,只能在上网找,在整理下。这里不得不吐槽一句,现在的博客真是千篇一律,也要夸一句,将一篇博客搬来搬去,一个标点符号都不丢,也是本事了。

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="30 seconds" debug="false">
    <!--property:用来定义变量值,会被插入到logger上下文中,可以使“${}”来使用变量。-->
    <!--name的值是变量的名称;value是变量的值。-->
    <property name="LOG_NAME" value="m-shop-test-log"></property>
    <!--日志输出文件位置-->
    <property name="LOG_PATH" value="logs"></property>
    <!--输出编码-->
    <property name="ENCODING" value="UTF-8"></property>
    <!--日志输出格式-->
    <property name="LOG_FORMAT" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50}:%L - %msg%n"></property>
    <!--上下文名称,默认:default 用于区分不同应用程序的记录-->
    <contextName>${LOG_NAME}</contextName>
    <!--timestamp:获取时间戳字符串,他有两个属性key和datePattern-->
    <!--key为timestamp标签的名字;datePattern是设置将当前时间(解析配置文件的时间)转换为字符串的模式-->
    <timestamp key="dateFormat" datePattern="yyyy-MM-dd HH:mm:ss"></timestamp>
    <!--appender:负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名-->
    <!--将日志输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--打印格式-->
            <pattern>${LOG_FORMAT}</pattern>
            <!-- 设置字符集 -->
            <charset>${ENCODING}</charset>
        </encoder>
    </appender>

    <!--将日志打印到文件(时间滚动输出)-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 此日志文件"只记录"info级别的 -->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志归档-->
            <fileNamePattern>${LOG_PATH}/${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!--日志文件最大大小-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--打印格式-->
            <pattern>${LOG_FORMAT}</pattern>
            <!-- 设置字符集 -->
            <charset>${ENCODING}</charset>
        </encoder>
    </appender>

    <logger name="m-shop-mybatis-sql" level="debug">
    </logger>

    <springProfile name="dev,test">
        <!-- 日志输出级别 -->
        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>
    <springProfile name="prod">
        <!-- 日志输出级别 -->
        <root level="info">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>
posted @ 2021-12-02 15:19  masy  阅读(114)  评论(0编辑  收藏  举报