在 Spring Boot 中使用 Logback 是非常简单的,因为 Logback 是 Spring Boot 默认的日志框架。
applicatiom.yml配置
# 日志配置
logging:
config: classpath:logback/logback.xml
level:
org.springframework.web.servlet.DispatcherServlet: INFO
# 日志路径
log:
path: /opt/agnss/server/logs/server
logback.xml
6c62ae26407cba9588eb08febd22.png)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback/logback-base.xml"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="errorLog"/>
<appender-ref ref="warnLog"/>
<appender-ref ref="infoLog"/>
</root>
</configuration>
这是一个典型的 Logback 配置文件,它引入了一个名为 logback-base.xml 的外部配置文件,并定义了日志的输出级别和目标。
logback-base.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<jmxConfigurator/>
<springProperty scope="context" name="logPath" source="log.path"/>
<property name="LOG_FILE" value="${logPath}"/>
<!--定义日志文件的存储地址勿在LogBack的配置中使用相对路径 -->
<property name="LOG_HOME" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-./tmp}}/}}"/>
<!-- 最大保存历史日志天数 -->
<property name="LOG_MAX_HISTORY" value="30"/>
<property name="CONSOLE_LOG_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_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!--<withJansi>true</withJansi>-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 消息日志,记录项目所有消息记录 -->
<appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 如果指定了file属性,当天的文件名为file属性值 -->
<file>${LOG_HOME}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/info.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>500MB</maxFileSize>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 消息日志,记录项目所有消息记录 -->
<appender name="warnLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 如果指定了file属性,当天的文件名为file属性值 -->
<file>${LOG_HOME}/warn.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/warn.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>200MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level><!-- 只接收错误级别的日志 -->
</filter>
</appender>
<!-- 错误日志,记录项目标识的错误级别信息 -->
<appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/error.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 消息日志,记录项目所有消息记录 -->
<appender name="debugLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 如果指定了file属性,当天的文件名为file属性值 -->
<file>${LOG_HOME}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/debug.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>500MB</maxFileSize>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
</included>
在这个示例中,将不同级别的日志输出到不同的目标中,如标准输出、错误日志文件、警告日志文件和信息日志文件。你可以根据自己的需求,进一步调整这个配置文件,例如修改日志级别、输出格式、输出目标等。