spring-boot-starter-logging日志配置

以下所有内容均可在springboot-demo中找到。

所需依赖

在pom.xml引入maven依赖,注意是否存在依赖冲突。

<dependency>
    <groupId>org.springframework.boot<groupId>
    <artifactId>spring-boot-starter-logging<artifactI>
</dependency>

默认配置文件logback.xml

在resources目录下添加logback.xml文件,指定日志输出格式和文件。这里将日志文件按天归档,并按100M切割文件。日志文件太大的话查看会很麻烦。另外我个人喜话将终端日志配置彩色效果,并使用ThresholdFilter将error级别的日志单独输出到一个文件,方便排查错误。

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true">
    <property name="APP_NAME" value="SpringBootDemo"/>
    <property name="LOG_HOME" value="./log/${APP_NAME}"/>

    <!-- 彩色日志输出格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%cyan(%-5level) |%blue(%thread) |%yellow(%file:%line) |%green(%logger) |%highlight(%msg%n)"/>

    <property name="CONSOLE_LOG_PATTERN2"
              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([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <property name="PATTERN" value="%d{yy-MM-dd.HH:mm:ss.SSS}|%X{invokeNo}|[%-16t] %-5p %-22c{0} - %m%n"/>
    <property name="CHARSET" value="UTF-8"/>

    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${CHARSET}</charset>
        </encoder>
    </appender>
    <appender name="detailAppender" class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
        <File>${LOG_HOME}/${APP_NAME}_detail.log</File>
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>${CHARSET}</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${APP_NAME}_detail.%d{yyyyMMdd}.%i.log</fileNamePattern>
            <!-- 每天归档,最大100M,保存7天 -->
            <maxHistory>7</maxHistory>
            <maxFileSize>100MB</maxFileSize>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <File>${LOG_HOME}/${APP_NAME}_error.log</File>
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>${CHARSET}</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${APP_NAME}_error.%d{yyyyMMdd}.%i.log</fileNamePattern>
            <!-- 每天归档,最大100M,保存7天 -->
            <maxHistory>7</maxHistory>
            <maxFileSize>100MB</maxFileSize>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <!-- TRACE < DEBUG < INFO < WARN < ERROR  -->
    <logger name="org.springframework" level="INFO"/>
    <!--> 指定输出的日志级别-->
    <root level="debug">
        <appender-ref ref="consoleAppender"/>
        <appender-ref ref="detailAppender"/>
        <appender-ref ref="errorAppender"/>
    </root>
</configuration>

使用@Slf4j和log

更多使用方法,请参看logback官网文档

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
@Slf4j
public class SpringBootLogTest  extends SpringBootApplicationTests{
    @Test
    public void logTest() {
        //日志的级别;
        //由低到高   trace<debug<info<warn<error
        //可以调整输出的日志级别;日志就只会在这个级别及以后的高级别生效
        log.trace("这是trace日志...");
        log.debug("这是debug日志...");
        //SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root level
        log.info("这是info日志...");
        log.warn("这是warn日志...");
        log.error("这是error日志...");
    }
}

输出结果:可以看到由于logback中指定了root level=”debug”,输出了debug及以上级别的日志。不得不说,彩色日志真好看!可惜这个只能在idea的终端中显示颜色,普通的日志文件就不行了。 logging

留下评论