springboot 使用 logback

本文介绍了如何在SpringBoot项目中集成并配置Logback,包括创建`logback-spring.xml`配置文件以及在`application.yml`中进行简单配置的方法。

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

在src/main/resources/下新建
logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- debug:打印logback内部日志信息,实时查看logback的运行状态,默认为false -->  
<!-- scan:配置文件如果发生改变,是否被重新加载,默认为true。 -->  
<!-- scanPeriod:设置检测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒,默认的时间间隔为1分钟,默认为true。 -->  
<configuration debug="false" scan="true" scanPeriod="30 seconds">
    <property name="logback.logdir" value="f:/mylog/" />
    <property name="logback.appname" value="spring-boot" />

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter> -->
        <encoder charset="UTF-8">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} %line -%msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="fileDebugLog"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--匹配debug -->
            <level>debug</level>
            <!--匹配到就允许 -->
            <onMatch>ACCEPT</onMatch>
            <!--没有匹配到就禁止 -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则 如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天 
            的日志改名为今天的日期。即,<File> 的日志都是当天的。 -->
        <File>${logback.logdir}/debug/debug.${logback.appname}.log</File>
        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间 -->
            <FileNamePattern>${logback.logdir}/debug/debug.${logback.appname}.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!--只保留最近90天的日志 -->
            <maxHistory>90</maxHistory>
            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志 -->
            <!--<totalSizeCap>1GB</totalSizeCap> -->
        </rollingPolicy>
        <!--日志输出编码格式化 -->
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} %line -%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="fileInfoLog"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--匹配info -->
            <level>info</level>
            <!--匹配到就允许 -->
            <onMatch>ACCEPT</onMatch>
            <!--没有匹配到就禁止 -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则 如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天 
            的日志改名为今天的日期。即,<File> 的日志都是当天的。 -->
        <File>${logback.logdir}/info/info.${logback.appname}.log</File>
        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间 -->
            <FileNamePattern>${logback.logdir}/info/info.${logback.appname}.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!--只保留最近90天的日志 -->
            <maxHistory>90</maxHistory>
            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志 -->
            <!--<totalSizeCap>1GB</totalSizeCap> -->
        </rollingPolicy>
        <!--日志输出编码格式化 -->
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} %line -%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="fileErrorLog"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--如果只是想要 Error 级别的日志,那么需要过滤一下,默认是 info 级别的,ThresholdFilter -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>Error</level>
        </filter>
        <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则 如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天 
            的日志改名为今天的日期。即,<File> 的日志都是当天的。 -->
        <File>${logback.logdir}/error/error.${logback.appname}.log</File>
        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间 -->
            <FileNamePattern>${logback.logdir}/error/error.${logback.appname}.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!--只保留最近90天的日志 -->
            <maxHistory>90</maxHistory>
            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志 -->
            <!--<totalSizeCap>1GB</totalSizeCap> -->
        </rollingPolicy>
        <!--日志输出编码格式化 -->
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} %line -%msg%n</pattern>
        </encoder>
    </appender>

    <!-- 指定具体包的日志级别 -->
    <logger name="com.example" level="debug"></logger>

    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileDebugLog" />
        <appender-ref ref="fileErrorLog" />
    </root>

</configuration> 

如果只是想简单使用的话,也可以直接在application.yml中配置

logging:
  file: f:/mylog/test-log.log
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} %line -%msg%n"
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} %line -%msg%n"
  level:
    root: info
    com.example: debug
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值