DefaultSecurityFilterChain、URLConfigurationSource 等 logger 名称带尾部空格,与真实类名不一致,降噪配置无法匹配,框架 DEBUG 日志仍会输出。maxHistory=30 和 maxFileSize=1MB,单级别理论最大约 30MB,但多服务、多级别同目录时,总磁盘占用不可控,存在写满磁盘风险。SizeAndTimeBasedRollingPolicy 增加 <totalSizeCap>500MB</totalSizeCap>。即每个服务、每个级别(DEBUG/INFO/WARN/ERROR)的归档总大小上限 500MB,单服务四类合计约 2GB 上限。log.maxHistory 注释为「30个」,与其他模块「保留30个归档」不一致。defaultValue="C:/project/ext/log" 在 Linux 或容器中若未设置 logging.path,目录可能不存在或不可写,导致日志写失败或落盘到非预期路径。application.yml 或环境变量中显式配置 logging.path(如 /var/log/alien-xxx 或 ./logs)。${log.level}(debug),控制台会输出 DEBUG,生产易刷屏。LOG_DIR(如 logging.path/alien-dining/),同机多实例若共用同一 logging.path 且相同 FILENAME 会写同一子目录。logging.path(如 .../log-instance1)或通过启动参数覆盖 FILENAME 以区分。LOG_DIR = logging.path/FILENAME),不会自动创建 logging.path 本身。logging.path 所指目录已存在且有写权限;否则首次写日志会报错。Linux 可设为 /var/log/xxx 或 ./logs 并确保目录存在。| 项目 | 说明 |
|---|---|
| 异步 Appender | 对写盘量大的服务可将 FILE 包一层 AsyncAppender,减轻主线程 IO,需接受异常退出时可能少几条日志。 |
| 按环境区分 | 使用 <springProfile name="pro"> 等区分开发/生产路径、级别或 totalSizeCap。 |
| immediateFlush | 默认 true,设为 false 可减少 IO,换少量丢日志风险,一般保持 true。 |
| 项目 | 说明 |
|---|---|
| 滚动策略 | SizeAndTimeBasedRollingPolicy,单文件 1MB,按天+序号归档并压缩为 .gz |
| 日志目录 | 各服务写入各自子目录 ${logging.path}/${FILENAME}/,如 C:/project/ext/log/alien-dining/、alien-gateway/ 等 |
| 当前写入文件 | ${LOG_DIR}/DEBUG.log、INFO.log、WARN.log、ERROR.log(LOG_DIR = logging.path/FILENAME) |
| 归档保留 | maxHistory=30 个归档,totalSizeCap=500MB/级别 |
| 启动清理 | cleanHistoryOnStart=true |
| 文件编码 | UTF-8 |
| 降噪 | DefaultSecurityFilterChain、URLConfigurationSource 等已设为 WARN,且 logger 名称已去掉尾空格 |
${log.level} 改为固定 INFO,与其它模块一致,避免生产控制台 DEBUG 刷屏;并增加 logging.path 部署说明注释。| 类型 | 说明 | 建议 |
|---|---|---|
| 部署 | logging.path 默认 C:/project/ext/log,Linux/容器未配置时可能写失败 |
生产/测试在配置或环境变量中设置 logging.path,并确保该目录存在 |
| 部署 | Logback 只自动创建 LOG_DIR,不创建 logging.path 根目录 |
部署前创建根目录或使用已存在路径(如 ./logs) |
| 多实例 | 同机多实例若共用同一 logging.path 且同服务名会写同一子目录 |
按实例配置不同 logging.path 或区分 FILENAME |
| 可选 | 高吞吐服务可考虑 AsyncAppender 减轻主线程 IO | 按需在对应模块为 FILE appender 包一层异步,接受异常退出时可能少几条日志 |
| 可选 | 按环境区分路径/级别(如 pro 用不同 path 或 totalSizeCap) | 使用 <springProfile name="pro"> 等 |
当前配置已无已知逻辑错误;剩余为部署约定与可选性能优化。