概述:基于现有日志(已含 requestId / traceId),本文档记录对你提出的日志优化建议的评估、对现有配置的影响、需要的补丁清单与实施步骤,可作为补丁进展的跟踪记录。
当前关键文件:
1. 评估摘要(快速结论)
logback-spring.xml 兼容,但需替换或合并已有配置(不要并存多个 logback-spring 配置以免冲突)。logback 配置;当前决定先不引入日志 JSON 输出(FILE_JSON)或额外的 logstash-logback-encoder 依赖,后续如需再考虑添加。2. 是否影响现有日志配置 / 冲突点
requestId / traceId)。若要添加 spanId,需在拦截器或链路追踪库中写入 MDC.put("spanId", ...)。logback-spring.xml 生效(当前文件位于上面链接)。替换时请备份原文件。pom.xml 添加 net.logstash.logback:logstash-logback-encoder。3. 依赖变更
pom.xml,保留为文本日志;若未来决定使用结构化 JSON 日志,可考虑添加依赖(示例): net.logstash.logback:logstash-logback-encoder:7.4。若使用异步 appender,依赖可以直接使用 logback 自带 AsyncAppender,无需额外库。
4. 建议补丁清单(要修改/新增的文件)
替换/更新 api-springboot/src/main/resources/logback-spring.xml:使用示例中更简洁的 pattern、增加 FILE_DETAIL、FILE_ERROR,并使用 %X{traceId:-} 等避免空括号。
新增 RequestLoggingFilter:api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/filter/RequestLoggingFilter.java(记录 URI、耗时、client IP、MDC traceId,慢请求告警)。
新增 LoggingAspect:api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/aop/LoggingAspect.java(入参/出参脱敏与方法耗时、慢方法告警)。
新增 LogDesensitizeAppender(可选草稿):api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/log/LogDesensitizeAppender.java(若采用,全链路异步写入并仅对必要消息做替换)。
新增 RequestLoggingFilter:api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/filter/RequestLoggingFilter.java(记录 URI、耗时、client IP、MDC traceId,慢请求告警)。
新增 LoggingAspect:api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/aop/LoggingAspect.java(入参/出参脱敏与方法耗时、慢方法告警)。
新增 LogDesensitizeAppender(可选草稿):api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/log/LogDesensitizeAppender.java(若采用,全链路异步写入并仅对必要消息做替换)。
5. 实施步骤(推荐顺序)
logback-spring.xml,保证新配置引用的 appender 与 logger 正确(避免重复写入)。RequestLoggingFilter(低风险,记录必要请求信息,注意 body/headers 不默认记录)。LoggingAspect(AOP)以覆盖 Controller 入参/出参日志并做脱敏处理。LogDesensitizeAppender 并通过 AsyncAppender 链接到文件/控制台。6. 测试与验证要点
logs/app.log 是否仅有一份消息(无重复)。[traceId] 不再空白(或显示 - 作为默认)。secret/token 显示为 ***)。7. 风险与应对
additivity 与 root logger,必要时将业务 logger additivity 设为 false。8. 补丁进度(来自 TODO 跟踪)
logback-spring.xml,已添加异步文件与错误文件 appender(步骤 1 完成)。logback-spring.xml,已添加异步文件与错误文件 appender(步骤 1 完成)。RequestLoggingFilter(api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/filter/RequestLoggingFilter.java),记录请求开始/结束、耗时及慢请求告警(步骤 2 完成)。RequestLoggingFilter(api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/filter/RequestLoggingFilter.java),记录请求开始/结束、耗时及慢请求告警(步骤 2 完成)。LoggingAspect(api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/aop/LoggingAspect.java),记录 Controller 入参/出参(脱敏)、耗时与慢方法告警(步骤 3 完成)。LoggingAspect(api-springboot/src/main/java/work/baiyun/chronicdiseaseapp/aop/LoggingAspect.java),记录 Controller 入参/出参(脱敏)、耗时与慢方法告警(步骤 3 完成)。build-and-run.bat,脚本现在会切换到脚本目录(api-springboot)再执行 Maven 和启动命令,避免在仓库根目录运行导致的错误(脚本修正完成)。9. 下一步(我可以代劳)
pom.xml、替换 logback-spring.xml、新增 RequestLoggingFilter、LoggingAspect、LogDesensitizeAppender 草稿,并运行静态检查;是否现在开始按照建议顺序生成这些补丁?文档生成时间:2025-12-22 本文为补丁与评估记录,后续补丁进展会以 TODO 列表同步更新。