logback-spring.xml配置

本文详细介绍了在SpringBoot中如何使用logback进行日志配置,包括logback-spring.xml的创建与配置,如控制台输出、文件输出、滚动日志文件及日志级别过滤等关键内容。

     spring boot中配置logback,需要在classpath下创建一个logback-spring.xml文件,然后在application.yml中配置logging.config=classpath:logback-spring.xml

 1.  logback-spring.xml中的根节点为<configuration>,其下有三个属性:

         scan:当配置文件改变后,则会重新加载,默认为true

         scanPeriod:检测配置文件是否改变的间隔,若scan为true,则scanPeriod默认为60s

         debug:是否打印出logback内部的日志

例:

<configuration scan="true" scanPeriod="60 seconds" debug="false"> 
    <!--其他配置省略--> 
</configuration> 

2.子节点<contextName>用于设置上下文名称,默认为default,主要用于区别不同的应用

<configuration scan="true" scanPeriod="60 seconds" debug="false"> 
     <contextName>myAppName</contextName> 
    <!--其他配置省略-->
</configuration>    

3.子节点<property>定义变量,有属性name,value,     name:变量名称, value:变量值 , 配置文件中可以通过${}来引用<property>变量

<configuration scan="true" scanPeriod="60 seconds" debug="false"> 
   <property name="APP_Name" value="myAppName" /> 
   <contextName>${APP_Name}</contextName> 
   <!--其他配置省略--> 
</configuration>

4.子节点<appender>负责logback组件,也是logback配置文件的最主要的内容,有两个属性name:组件名称,class:类。

           consoleAppender:控制台输出组件

           <encode>:设置控制台输出日志的格式,例:

<encode>
    <pattern>
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
    </pattern>
</encode>

%d表示当前时间{yyyy-MM-dd HH:mm:ss.SSS}对时间进行格式化,%thread:线程名,%-5level:级别名,%msg:日志信息,%n:换行

<filter>过滤器

ch.qos.logback.classic.filter.ThresholdFilter

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>debug</level>
</filter>

只输出debug级别的日志信息

ch.qos.logback.classic.filter.LevelFilter
<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

<level>设置级别,<onMatch>若日志信息符合则使用,<onMismatch>若日志信息不匹配则放弃

完整的consoleAppender代码

<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>debug</level>
    </filter>
    </appender>

2.fileAppender:将日志写入文件中

      <file>:文件路径名

      <append>:是否追加,若否则每次写入都会覆盖之前的日志

      <encode>:日志格式信息

<appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
        <file>testFile.log</file>
        <append>true</append>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

3.rollingFileAppender滚动记录日志,将日志记录到指定文件,一旦时间条件达到则将日志写入另一个文件中

     <file>:文件路径

    <append>:是否追加

   <rollingPolicy>:滚动策略

    class:ch.qos.logback.core.rolling.TimeBasedRollingPolicy --最常用的滚动策略,基于每日滚动

      <fileNamePattern>C:\log\error\%d{yyyy-MM-dd}.log</fileNamePattern>  文件名用日期来命名

      <maxHistory>最多文件数,一旦文件数到达指定数则会将之前的旧文件删除

<property name="log.path" value="C:\log"/>

    <appender name="debugRollingAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>{log.path}/debug/%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


        <appender name="infoRollingAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>/log/info/%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>


        <appender name="errorRollingAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>/log/error/%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>


        <appender name="warnRollingAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>/log/warn/%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>WARN</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>

最常搭建的是:每日分级日志

<root> 属性leve,默认为debug

   <appender-ref>中ref属性将之前写的appender全部添加到这里

<root level="info">
        <appender-ref ref="consoleAppender"/>
        <appender-ref ref="debugRollingAppender"/>
        <appender-ref ref="infoRollingAppender"/>
        <appender-ref ref="errorRollingAppender"/>
        <appender-ref ref="warnRollingAppender"/>
    </root>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值