前段时间做了个功能是拦截请求信息打印log,后来日志因为太多所以单独输出到一个文件好分辨,及记录一下过程。
SpringBoot 日志相关
SpringBoot使用默认日志框架是Logback,并用INFO级别输出到控制台。
SpringBoot的日志级别:
TRANCE < DRBUG < INFO < WARN < ERROR <FATAL < OFF
#root 日志级别以WARN级别输出
logging.level.root=WARN
#springframework.web日志以DEBUG级别输出logging.level.org.springframework.web=DEBUG
默认情况下,SpringBoot将日志输出到控制台,不会写到日志文件中
SpringBoot 日志输出到文件
在application.properties中设置logging.file或logging.path属性
- logging.file 可以用相对路径和绝对路径
logging.file=/log/my.log
- logging.path设置目录,会在该目录下新建spring.log文件,并写入日志内容。
logging.path=/var/log
- logging.file优先级高于logging.path
- 默认情况下,日志文件大小达到10MB会切分一次,产生新的日志文件,默认界别为:ERROR、WARN、INFO
#root 日志级别以WARN级别输出
logging.level.root=WARN
#springframework.web日志以DEBUG级别输出logging.level.org.springframework.web=DEBUG
#相对路径
#logging.file=log/my.log
#把日志信息写入日志文件,会自动生成
logging.file=/var/logs/info.log
#配置控制台日志显示格式logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
#配置文件中日志显示格式logging.pattern.file=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
按业务输出到不同的文件中
思路
- 自定义一个输出到文件的appender(理解为日志输出器)
- 配置logger,logger的name为需要单独生成文件的那个包的全包名,然后在里面引用上面定义的appender
实现
- 在resources下面定义一个logback-spring.xml
- 将logback的默认配置(base.xml)内容copy到我们的xml文件中,因为我们想保留它的默认配置
- 定义一个输出到文件的appender
- 定义一个logger,logger的name为需要单独生成文件的那个包的全包名
- logger里面引用我们上面定义的appender
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--保留官方配置,方便使用官方配置的特性,参考:spring-boot-2.1.0.RELEASE.jar!\org\springframework\boot\logging\logback\base.xml-->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<!-- 自定义配置__单独输出到一个日志文件中 -->
<appender name="Biz_LOG" 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>
<!-- 自定义配置__配置业务日志输出至单独的日志文件中 -->
<logger name="com.jwx.digital.client.haier.http" additivity="false" level="debug">
<!-- 引用自定义的appender -->
<appender-ref ref="Biz_LOG"/>
<!-- 这里也引用控制台appender,才能在控制台中看到我们的日志 -->
<appender-ref ref="CONSOLE"/>
</logger>