个人博客


SpringBoot默认采用logback作为日志输出。

1、参数含义

参数含义
%date或%d日期
%level或%p日志级别,DEBUG、INFO、WARN、ERROR
%X{var}访问MDC中和线程绑定的变量
%thread或%t线程名
%logger或%c类全名
%line行号
%msg或%m输出内容
%n换行符

2、xml参考配置

日志配置文件一般命名为logback-spring.xmllogback.xml,日志框架在启动时默认就会读取该配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 引用配置属性 -->
<springProperty scope="context" name="appName" source="spring.application.name"/>

<!--1. 输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- info级别,也会记录warn和error -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>

<encoder>
<charset>UTF-8</charset>
<!-- 输出格式 -->
<Pattern>%d [%p] [%t] [%c:%line] [%X{seq}] %m%n</Pattern>
</encoder>
</appender>

<!--2. 输出到文件-->
<!-- 2.1 level为 INFO 日志,时间滚动输出 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${user.home}/log/${appName}.log</file>
<!--日志文档输出格式-->
<encoder>
<charset>UTF-8</charset>
<pattern>%d [%p] [%t] [%c:%line] [%X{seq}] %m%n</pattern>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>${user.home}/log/${appName}.log.%d{yyyyMMdd}.gz</fileNamePattern>
<!--日志文档保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>

<!-- 此日志文档只记录info级别的,不记录warn以及error,用作定向输出info日志文件 -->
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!--<level>info</level>-->
<!--<onMatch>ACCEPT</onMatch>-->
<!--<onMismatch>DENY</onMismatch>-->
<!--</filter>-->

<!-- info级别,也会记录warn和error -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
</appender>


<!--特定输出-->
<appender name="WarnController" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>warn</level>
</filter>
<encoder>
<charset>UTF-8</charset>
<Pattern>%d [%p] [%t] [%c:%line] [%X{seq}] %m%n</Pattern>
</encoder>
</appender>
<!-- 单独对某个类或某个包下配置,additivity为false代表不继承root(root中则不再输出此日志)-->
<logger name="net.zhaoxiaobin.web.WarnController" level="warn" additivity="false">
<appender-ref ref="WarnController"/>
</logger>

<!-- root节点会把所有日志经过level过滤再输出给appender对应配置 -->
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>

</configuration>

代码地址