相关配置
默认行为
默认行为
1. 控制台输出:如果没有配置文件或配置文件中没有指定文件输出位置,则默认情况下 Logback 会将日志输出到控制台(System.out 或 System.err)。
2. 文件输出:如果配置了文件输出但没有指定具体的路径,则 Logback 会将日志文件输出到当前工作目录下的 logs 目录中。
配置日志文件地址
1、在配置文件 application.yml 中
logging:
file:
path: d:/logs // 默认文件名 spring.log
logging:
file:
name: logs.log // 默认直接在当前项目目录下
2、配置相关属性在logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
configuration作为logback的根节点有以下属性
scan: 默认为true, 配置文件发生变化, 将会被重新加载
scanPeriod: 检测配置文件是否有修改的间隔时间,默认1分钟
debug: 默认为false, true时会打印logback内部日志信息
packagingData: 默认为false, true时, logback可以包含它输出的堆栈跟踪行的每一行的打包数据。打包数据由jar文件的名称和版本组成,而这个jar文件是由堆栈跟踪线的类产生的
-->
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="D://logs" />
<!--
appender: 有日志时, logback会将这个事件发送给appender
filter;过滤器
encoder:日志格式
append:如果目标文件已存在, 是否追加到文件尾部, 默认为true, 否则清空文件
rollingPolicy:如何滚动, 我们这是使用了TimeBasedRollingPolicy, 基于时间进行滚动
triggeringPolicy: 何时滚动
-->
<!--
rollingPolicy
TimeBasedRollingPolicy: 基于时间进行滚动
fileNamePattern: 文件路径
maxHistory: 保留多长时间的日志
totalSizeGap: 限制了日志文件的大小总共不能超过的大小
cleanHistoryOnStart: 指定了是否重启应用的时候删除之前的归档日志
SizeAndTimeBasedRollingPolicy: 策略除了具有 TimeBasedRollingPolicy 的功能外,还能限制单个日志文件的大小,当单个日志到达指定的大小时,触发日志滚动
-->
<!--控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--只记录INFO级别的日志-->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--追加-->
<append>true</append>
<!--过滤器,只记录INFO级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}/test.%d{yyyy-MM-dd}-info.log</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--只记录WARN级别的日志-->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--追加-->
<append>true</append>
<!--过滤器,只记录WARN级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}/test.%d{yyyy-MM-dd}-warn.log</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--过滤器,只记录ERROR级别的日志-->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--追加-->
<append>true</append>
<!--过滤器,只记录ERROR级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_HOME}/test.%d{yyyy-MM-dd}-error.log</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--<!–日志文件最大的大小–>-->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
<!--<MaxFileSize>10MB</MaxFileSize>-->
<!--</triggeringPolicy>-->
</appender>
<!-- 日志输出级别,INFO及以上的都会被输出 -->
<root level="INFO">
<!--输出到控制台,生产环境这个可以注释掉-->
<appender-ref ref="CONSOLE"/>
<!--保存到日志文件,测试这个可以注释掉-->
<appender-ref ref="INFO" />
<appender-ref ref="WARN" />
<appender-ref ref="ERROR" />
</root>
</configuration>