我们在开发当中或者项目已经发布到prd之后,不管哪个环节,日志总是必不可少的。它是我们排查问题的有利工具。这节我们就来讨论下spring-boot的日志。
需求
- 能用文件记录日志,单单是输出到控制台不保存是没有办法追溯久远的问题的。
- 业务日志和系统日志区分对待,业务日志才记录到特定文件中。
- 能将日志进行归档处理或分片处理,防止日志文件过大。
logback
springboot的logback就能满足这个需求。
Spring Boot使用Commons Logging进行所有内部日志记录,但是使底层日志实现保持打开状态。提供了Java Util Logging,Log4J2和Logback的默认配置。在每种情况下,记录器都已预先配置为使用控制台输出,同时还提供可选文件输出。
在resource目录下的logback-spring.xml会被默认加载。
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<!-- 引入默认的配置,可以直接使用 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!-- 定义一个控制台输出配置 -->
<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 定义一个文件输出配置 -->
<appender name="FILELOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}_BIZ.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}_BIZ.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
<maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
</rollingPolicy>
</appender>
<root level = "INFO">
<appender-ref ref = "STDOUT"/>
</root>
<!-- 对特定包下的日志做特殊处理 -->
<logger name="com.vison" additivity="false" level="debug">
<!-- 引用自定义的appender -->
<appender-ref ref="FILELOG"/>
<!-- 这里也引用控制台appender,才能在控制台中看到我们的日志 -->
<appender-ref ref="STDOUT"/>
</logger>
</configuration>
logging.file.name 配置会定义日志文件输出的文件名和路径