Spring Boot使用logback

本文介绍如何在SpringBoot项目中自定义Logback日志配置,包括分文件记录不同级别的日志、按日期归档及限制日志文件数量等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认情况下Spring boot使用Logback作为日志框架。当我们加入stater-web时:

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

默认的已经添加了logback依赖了。Spring Boot已为当前使用日志框架的控制台输出以及文件的输出做好了配置。如果我们想修改,可以在Spring Boot的配置文件application.properties中配置,例如:

logging.file=D://mylog/log.log

但是,有时我们想实现一些更细粒度的控制,例如只记录最近30天的日志,对于不同错误级别,记录到不同的日志文件中。

1、首先在resources目录下新建logback-boot.xml 名字不可以是 logback.xml ,logback-xxx.xml随意。



2、在logback-boot.xml中配置输入目的、格式等。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="300 seconds">
    <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
    <!--↑使用该行,则控制台中有重复的日志,默认格式的日志和此处配置的日志-->
    <!--<logger name="org.springframework.web" level="INFO"/>-->

    <contextName>bioinfo</contextName>

    <property name="LOG_HOME" value="/root/apache-tomcat-7.0.68/logs"/>
    <!--正常日志的文件名-->
    <property name="FILE" value="bioinfo.log_info"/>
    <!--错误日志的文件名-->
    <property name="FILE2" value="bioinfo.log_error"/>

    <!-- 输出到文件 Simple file output -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--文件生成/切分策略 开始-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
            <!--<!–日志文件达到5MB时生成新文件–>-->
            <!--<maxFileSize>10MB</maxFileSize>-->
        <!--</triggeringPolicy>-->
        <!--文件生成/切分策略 结束-->
        <!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <!--logback中parrern布局的左右括号()有特殊含义,如需输出应该转义\(\)-->
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!--仅输出INFO以上级别日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <!-- 输出错误日志到另一文件 Simple file output -->
    <appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--文件生成/切分策略 开始-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${FILE2}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
            <!--<!–日志文件达到5MB时生成新文件–>-->
            <!--<maxFileSize>10MB</maxFileSize>-->
        <!--</triggeringPolicy>-->
        <!--文件生成/切分策略 结束-->
        <!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!--仅输出ERROR级别日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>


    <!-- 输出到控制台Console output -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- Only log level WARN and above -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>

    <!-- Enable FILE and STDOUT appenders for all log messages.  By default, only log at level INFO and above. -->
    <root level="INFO">
        <appender-ref ref="FILE"/>
        <appender-ref ref="FILE2"/>
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>

3、在Spring boot的配置文件中配置自定义的日志配置文件。

#在application.properties文件中引入日志配置文件  
#=====================================  log  =============================  
logging.config=classpath:logback-boot.xml 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值