SpringBoot 集成Slf4j+logback日志框架

1、日志打印配置:

1.1 logback.xml:

<?xml version="1.0" ?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!-- 自定义pattern -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%green(%d{yyyy-MM-dd HH:mm:ss.SSS}) | %red([%-5level]) | %cyan(%logger - %msg%n)"></property>

    <!--控制台日志 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            &lt;!&ndash;表示匹配该级别及以上&ndash;&gt;
            <onMatch>ACCEPT</onMatch>
            &lt;!&ndash;表示不匹配该级别以下的&ndash;&gt;
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <encoder>
            <pattern>
                <!--日志输出格式-->
                <!--%green(%d{yyyy-MM-dd HH:mm:ss.SSS}) %red([%-5level]) %cyan(%logger - %msg%n)-->
                ${CONSOLE_LOG_PATTERN}
            </pattern>
        </encoder>
    </appender>

    <!-- INFO级别日志,记录INFO级别及比INFO更高级别的日志-->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                <!--日志引文件路径-->
                ${user.dir}\logs\%d{yyyy-MM-dd}\info.log
            </fileNamePattern>
            <!-- 日志保存15天,超过15天自动删除 -->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>
                <!--日志输出格式-->
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- ERROR级别日志,只记录Error级别日志 -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤器,只记录ERROR级别的日志,如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                <!--日志文件路径-->
                ${user.dir}\logs\%d{yyyy-MM-dd}\error.log
            </fileNamePattern>
            <!-- 日志保存15天,超过15天自动删除 -->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>
                <!--日志输出格式-->
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- 配置日志打印等级 -->
    <root level = "INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="INFO"/>
        <appender-ref ref="ERROR"/>
    </root>
</configuration>

1.2 日志等级配置

有两种方式配置日志等级(目前只写这两种):
1、<root>:  root标签配置日志等级作为总开关,控制引用的appender的日志等级
2、<filter>: 在appender中配置filter,但是只配置<level>的话,优先级没有<root>标签配置的等级高;若搭配<onMatch><onMismatch>标签进行配置的话,应该优先级比<root>高(个人理解,有更好的见解请留言指导)

2、日志打印

@RestController
public class Hello {

    private final Logger logger = LoggerFactory.getLogger(Hello.class);

    @RequestMapping(value = "hello", method = RequestMethod.POST)
    public String hello() {
        String method = "hello";
        logger.info("进入{}方法", method);
        logger.error("{}方法处理中", method);
        logger.debug("{}方法结束", method);
        return "hello";
    }
}

3、修改控制台日志颜色

例如:
%d{yyyy-MM-dd HH:mm:ss.SSS} | [%-5level] | %logger - %msg%n

修改字体颜色,语法:
%+颜色+括号(**将需要修改颜色的内容括在里面,注意括号后面需要空格隔开**%green(%d{yyyy-MM-dd HH:mm:ss.SSS}) | %red([%-5level]) | %cyan(%logger - %msg%n)

版权声明:本文为zhangwenchao0814原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。