实现多级别日志输出
在Spring Boot项目中,Logback作为默认日志框架,可以通过application.properties或logback-spring.xml配置多级别日志输出。以下是关键配置示例:
<!-- logback-spring.xml -->
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.example" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
按级别分离日志文件
通过不同appender配置实现ERROR级别和DEBUG级别日志分离:
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/error.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/debug.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/debug-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
日志归档策略配置
Logback提供多种滚动策略实现日志归档:
- TimeBasedRollingPolicy:按时间滚动
- SizeAndTimeBasedRollingPolicy:按时间和大小滚动
- FixedWindowRollingPolicy:固定窗口策略
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/app-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
动态日志级别调整
Spring Boot Actuator提供日志级别动态调整端点,需添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
通过HTTP请求动态修改日志级别:
# 查看当前日志级别
GET /actuator/loggers/com.example
# 修改日志级别
POST /actuator/loggers/com.example
{
"configuredLevel": "DEBUG"
}
日志异步输出优化
对于高性能场景,可采用异步appender提升性能:
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<queueSize>512</queueSize>
<discardingThreshold>0</discardingThreshold>
<includeCallerData>false</includeCallerData>
<appender-ref ref="ROLLING_FILE"/>
</appender>
日志格式自定义
Logback支持多种日志格式标记:
%d:日期时间%thread:线程名%-5level:日志级别(左对齐,5字符宽度)%logger{36}:日志记录器名称(最大36字符)%msg:日志消息%n:换行符
示例格式:
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
1162

被折叠的 条评论
为什么被折叠?



