Spring Boot & Slf4j & logback 彩色日志打印(功能点_1、分运行环境生成日志文件 2、日志文件目录分类 3、日志文件按日输出).md

Spring Boot & Slf4j & logback 彩色日志打印(功能点_1、分运行环境生成日志文件 2、日志文件目录分类 3、日志文件按日输出).md

原文链接:慧言博客


需求概述:


一、项目目录,分dev,local,pro

image-20220720100649778


二、logback-spring.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<configuration scan="true" scanPeriod="10 seconds">
<contextName>logback</contextName>

<!--配置日志文件输出路径,下面用${path}占位使用}-->
<springProperty scope="context" name="LOG_URL" source="log.url" />
<property name="path" value="${LOG_URL}" />

<!--0. 日志格式和颜色渲染 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="local_pattern" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

<!--文件日志格式-->
<property name="file_pattern" value="%d - %msg%n"/>


<!--输出日志格式-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<encoder>
<Pattern>
${local_pattern}
</Pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--只保存info日志-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
${file_pattern}
</pattern>
<charset>UTF-8</charset>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${path}/info/info-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<!-- 文件大小分割,超过配置大小就建当天新的日志文件 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 保存7天 -->
<MaxHistory>7</MaxHistory>
<!-- 总日志大小 -->
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>

<!--只保存warn日志-->


<appender name="fileWarnLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
${file_pattern}
</pattern>
<charset>UTF-8</charset>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${path}/warn/warn-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<!-- 文件大小分割,超过配置大小就建当天新的日志文件 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 保存30天 -->
<MaxHistory>30</MaxHistory>
<!-- 总日志大小 -->
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>

<!--只保存error日志-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
${file_pattern}
</pattern>
<charset>UTF-8</charset>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${path}/error/error-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<!-- 文件大小分割,超过配置大小就建当天新的日志文件 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 保存30天 -->
<MaxHistory>30</MaxHistory>
<!-- 总日志大小 -->
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>

<!--local环境下,仅控制台打印,配置为彩色-->
<springProfile name="local">
<root level="info">
<appender-ref ref="consoleLog"/>
</root>
</springProfile>

<!--dev环境输出到文件-->
<springProfile name="dev">
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileWarnLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</springProfile>

<!--pro环境输出到文件-->
<springProfile name="pro">
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileWarnLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</springProfile>
</configuration>

三、效果

  1. local开发环境,直接输出到打印区

image-20220720100801731

  1. dev和pro环境,输出到文件中。
  • 生成文件路径在配置文件中配置
    image-20220720100811808
    image-20220720102028014
  • 日志文件名设置
    image-20220720100819690
  • 生成文件夹分三个,分别在配置文件里分为三个等级‘info’,‘error’,‘warn’
    image-20220720101120238
  • 生成日志文件以天为单位分文件
    image-20220720101620589

Spring Boot & Slf4j & logback 彩色日志打印(功能点_1、分运行环境生成日志文件 2、日志文件目录分类 3、日志文件按日输出).md
http://example.com/20230224171739.html
作者
John Doe
发布于
2023年2月24日
许可协议