本文提供了一个生产级logback-spring.xml完整配置模板,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
目录
- 完整模板
- 依赖引入(Maven)
- 关键配置说明
- 自定义脱敏 Converter(可选)
- 避坑提醒
这是一个可直接用于生产环境的 logback-spring.xml 完整模板。
它涵盖了日志滚动策略、多环境配置、JSON结构化输出(ELK兼容)、敏感信息脱敏、性能优化等核心要素。
完整模板
${CONSOLE_PATTERN}
UTF-8
${LOG_PATH}/${APP_NAME}.log
${LOG_PATH}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log
${MAX_FILE_SIZE}
${MAX_HISTORY}
${TOTAL_SIZE_CAP}
${FILE_PATTERN}
UTF-8
true
${LOG_PATH}/${APP_NAME}-error.log
ERROR
ACCEPT
DENY
${LOG_PATH}/${APP_NAME}-error.%d{yyyy-MM-dd}.%i.log
${MAX_FILE_SIZE}
${MAX_HISTORY}
${TOTAL_SIZE_CAP}
${FILE_PATTERN}
UTF-8
true
${LOG_PATH}/${APP_NAME}-json.log
${LOG_PATH}/${APP_NAME}-json.%d{yyyy-MM-dd}.%i.log
${MAX_FILE_SIZE}
${MAX_HISTORY}
${TOTAL_SIZE_CAP}
{"app_name":"${APP_NAME}","env":"${SPRING_PROFILES_ACTIVE:-unknown}"}
true
false
0
512
true
<!-- -->
0
256
true
依赖引入(Maven)
确保 pom.xml 中包含以下依赖:
net.logstash.logback
logstash-logback-encoder
7.4
org.apache.commons
commons-lang3
关键配置说明
| 配置项 | 作用 | 生产建议 |
|---|---|---|
| scan="true" scanPeriod="60 seconds" | 动态检测配置文件变更,无需重启 | 建议开启,但 debug="false" 避免日志泛滥 |
| SizeAndTimeBasedRollingPolicy | 同时按时间和大小滚动 | 防止单文件过大导致磁盘爆满 |
| AsyncAppender | 异步写日志,不阻塞主线程 | 强烈推荐,neverBlock=true 防止业务夯住 |
| LogstashEncoder | 输出 JSON 格式 | 对接 ELK 时必须,支持 customFields 注入元数据 |
| 多环境隔离 | 开发环境输出控制台,生产环境关闭 | |
| immediateFlush=true | 每次写入立即刷新 | 生产环境建议 true(可靠性优先),压测可调 false |
自定义脱敏 Converter(可选)
如果你需要精确脱敏(如手机号、身份证),创建以下类:
import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
public class MaskConverter extends ClassicConverter {
@Override
public String convert(ILoggingEvent event) {
String msg = event.getFormattedMessage();
// 手机号脱敏:13812345678 → 138****5678
msg = msg.replaceAll("(1\\d{2})\\d{4}(\\d{4})", "$1****$2");
// 身份证脱敏
msg = msg.replaceAll("(\\d{6})\\d{8}(\\d{4})", "$1********$2");
// 密码脱敏
msg = msg.replaceAll("(?i)(password|pwd|passwd)[\\s]*[=:][\\s]*\\S+", "$1=******");
return msg;
}
}
然后在模板顶部使用 注册,并在 pattern 中通过 %mask 引用。
避坑提醒
- 日志路径权限:确保 ${LOG_PATH} 目录存在且应用有读写权限,否则启动失败。
- 磁盘监控:务必对日志目录配置磁盘告警(如 80% 触发预警),防止日志打满磁盘。
- 异步队列监控:AsyncAppender 队列满时若 neverBlock=true 会丢弃日志,需配合监控发现。
- 不要同时使用 CONSOLE + FILE 同步模式:生产环境关闭 CONSOLE,否则磁盘 IO 翻倍。
到此这篇关于logback-spring.xml 完整生产模板的文章就介绍到这了,更多相关logback-spring.xml生产模板内容请搜索爱读视界以前的文章或继续浏览下面的相关文章希望大家以后多多支持爱读视界!
您可能感兴趣的文章:
- springboot中配置logback-spring.xml过程
- logback-spring.xml配置解析(最新整理)
- 关于logback.xml和logback-spring.xml的区别及说明
- 如何使用@Slf4j和logback-spring.xml搭建日志框架
- logback-spring.xml的配置及示例详解(直接复制粘贴可用)
- logback-spring.xml的内容格式详解
- springboot日志文件名称叫logback-spring.xml的原因解析
- logback-spring.xml配置详解