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

被折叠的 条评论
为什么被折叠?



