Spring Log初探

28 篇文章 1 订阅

背景

在配置logback-spring.xml时,发现线上对对应的目录没有生成文件,并且本地运行的时候也没有在指定目录生成日志,而是工程根目录下LOG_PATH_IS_NOT_DEFINED打印了一部分日志。

配置如下:

application.properties

logging.level.root=INFO
logging.path=/A/B

logback-spring.xml

<appender name="TIME_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <encoder>
       <pattern>${FILE_LOG_PATTERN}</pattern>
   </encoder>
   <file>${LOG_PATH}/${artifactId}-info.log</file>
   <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
   <fileNamePattern>${LOG_PATH}/${artifactId}-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
   <maxHistory>15</maxHistory>
   <totalSizeCap>5GB</totalSizeCap>
   <maxFileSize>500MB</maxFileSize>
   </rollingPolicy>
</appender>

<root level="${logging.level.root}">
  <appender ref="TIME_FILE" />
</root>

分析

由于本地打的目录的提示,首先怀疑的就是${LOG_PATH}并没有解析正确导致。

但是根据Spring Boot的官方文档来看:

If you look at base.xml in the spring-boot jar, you can see that it uses some useful System properties that the LoggingSystem takes care of creating for you:

  • ${PID}: The current process ID.
  • ${LOG_FILE}: Whether logging.file was set in Boot’s external configuration.
  • ${LOG_PATH}: Whether logging.path (representing a directory for log files to live in) was set in Boot’s external configuration.
  • ${LOG_EXCEPTION_CONVERSION_WORD}: Whether logging.exception-conversion-word was set in Boot’s external configuration.

spring会把logging.path设置到System的properties里,但是为什么没有生效呢?

网上对于这部分的资料有点少,所以决定自己去DEBUG。找到了一篇Spring Boot的日志系统文档。

为了控制日志的启动,

spring定义了一个LoggingSystem抽象类,并且提供了默认的LogbackLoggingSystemLog4j2LoggingSystemLoggingApplicationListener负责监听启动事件,通过initilize方法进行初始化,会通过Environment环境获取LogFile, 如果Logfile不为空的情况,就会使用系统环境中的LOG_PATHLOG_FILE两个变量.

LOG_FILE是通过logging.file配置读取的,这就代表只有配置了logging.file才会有LOG_PATH变量生效。

这也就解释了为什么LOG_PATH没有生效。

并且可以如下配置:

<root>
  <appender ref="TIME_FILE" />
</root>

在application.properties中配置:

logging.level.root=ERROR

Spring在启动的过程中,会动态设置logger的日志级别。

资料:

  1. https://www.logicbig.com/tutorials/spring-framework/spring-boot/logging-system.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值