spring2.xx后默认支持logback日志框架。具体logback.xml日志文件怎么配置网上资料很多,我们不细述。
本片我们主要学习再logback.xml配置文件动态获取系统变量问题
springboot项目启动的时候,同样也会从默认路径加载固定名称的日志配置,常见的logback.xml和logback-spring.xml两个配置文件,我们对比下两个文件的区别
在 Spring Boot 中,logback-spring.xml 和 logback.xml 的加载顺序是由 Spring Boot 的默认配置决定的。加载的顺序如下:
-
尝试加载
logback-spring.xml:- Spring Boot 首先尝试加载
logback-spring.xml文件。 - 如果存在
logback-spring.xml,Spring Boot 将使用该文件来配置 Logback。这个文件具有一些特殊的功能,包括对 Spring Profile 的支持。
- Spring Boot 首先尝试加载
-
如果
logback-spring.xml不存在,尝试加载logback.xml:- 如果没有找到
logback-spring.xml,Spring Boot 将尝试加载logback.xml。 logback.xml是 Logback 的默认配置文件,没有 Spring Boot 的特殊功能。它是一个传统的 Logback 配置文件。
- 如果没有找到
-
如果两者都不存在,使用默认配置:
- 如果两者都不存在,Spring Boot 将使用 Logback 的默认配置。
加载顺序的原因:
- Spring Boot 选择加载
logback-spring.xml主要是为了提供更多的集成和灵活性。这个文件可以根据 Spring Profile 进行定制,允许在不同的环境中使用不同的日志配置。 - 如果
logback-spring.xml不存在,Spring Boot 会回退到logback.xml,以确保向后兼容传统的 Logback 配置文件。
这样的加载顺序确保了在 Spring Boot 项目中可以方便地定制日志配置,同时保持了向后兼容性。如果你需要在不同的环境中使用不同的日志配置,建议使用 logback-spring.xml,并结合 Spring Profile 进行配置。
下面看看我们使用logback-spring.xml怎么使用Spring Profile的功能
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<springProperty scope="LOG_PATH" name ="LOG_PATH" source="file.dir"/>
<!-- <property name="LOG_PATH" value="${file.dir}}"/>-->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<property name="LOG_STDOUT_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<property name="LOG_FILE_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<!-- 输出到控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 输出的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_STDOUT_PATTERN}</pattern>
</encoder>
</appender>
<!-- 生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 日志名称 -->
<file>${LOG_PATH}/spt-logback.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/jiu_largeScreen.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 日志最大 50MB -->
<maxFileSize>50MB</maxFileSize>
<!-- 保存 30 天 -->
<maxHistory>30</maxHistory>
<!-- <totalSizeCap>10GB</totalSizeCap> <!– 总日志大小 –>-->
</rollingPolicy>
<encoder>
<pattern>${LOG_FILE_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
我们使用springProperty标签方式,标签里面source对应application.yml的配置信息