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>

 

 

 

所给引用内容未提及logback - spring.xml配置YAML的方法。不过一般来说,在Spring Boot项目里,可按以下方式在logback - spring.xml中结合YAML配置使用: ### 1. 引入必要依赖 确保项目的`pom.xml`里包含LogbackSpring Boot相关依赖: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> </dependencies> ``` ### 2. 创建logback - spring.xml文件 在`src/main/resources`目录下创建`logback - spring.xml`文件,下面是一个简单示例: ```xml <configuration> <!--Spring Boot的YAML配置文件中获取日志级别 --> <springProperty scope="context" name="logLevel" source="logging.level.root" defaultValue="INFO"/> <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 根日志器 --> <root level="${logLevel}"> <appender-ref ref="CONSOLE"/> </root> </configuration> ``` 在这个示例里,借助`<springProperty>`标签从Spring Boot的YAML配置文件里获取日志级别。`source`属性对应YAML文件里的配置项`logging.level.root`,当该配置项不存在时,会使用`defaultValue`指定的默认日志级别。 ### 3. 创建application.yml文件 在`src/main/resources`目录下创建`application.yml`文件,并且配置日志级别: ```yaml logging: level: root: DEBUG ``` 通过上述步骤,就能在`logback - spring.xml`里使用YAML配置的日志级别了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值