日志系统(Logback + AOP 操作日志)

复制代码
---
kind: logging_system
name: 日志系统(Logback + AOP 操作日志)
slug: logging_system
category: logging_system
scope:
    - '**'
---

## 1. 使用的框架与工具
- 日志框架:Logback(通过 `logback-spring.xml` 配置),配合 Lombok 的 `@Slf4j` 注解在各模块中统一输出。
- 链路追踪增强:部分服务(如 factorydata、production)在 INFO 异步 Appender 中使用了 `com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender`,用于增强异步日志的上下文传递。
- 业务操作日志:基于 Spring AOP + 自定义注解 `@LogExecution` 实现方法级执行日志记录,并通过 `SysLog` 实体持久化到数据库。

## 2. 核心文件与位置
- 各微服务模块的 Logback 配置文件:
  - `chr/src/main/resources/logback-spring.xml`
  - `factorydata/src/main/resources/logback-spring.xml`
  - `production/src/main/resources/logback-spring.xml`
- AOP 操作日志切面与持久化:
  - `biz/src/main/java/com/lvcc/biz/aspect/LogAspect.java`(AOP 切面)
  - `biz/src/main/java/com/lvcc/biz/entity/system/SysLog.java`(操作日志实体)
  - `biz/src/main/java/com/lvcc/biz/service/system/LogService.java` 及其实现类
  - `biz/src/main/java/com/lvcc/biz/dao/system/LogMapper.java`(MyBatis-Plus Mapper)
- 根目录日志输出目录:`log/`(包含 error、info、heart 等子目录,按日期滚动生成日志文件)

## 3. 架构与约定
- **日志输出结构**:每个服务的 `logback-spring.xml` 均定义以下 Appender:
  - `console`:控制台彩色输出(开发调试用)
  - `file_info`:INFO 级别文件输出,按天+大小滚动,保留 15 天,单文件最大 100MB
  - `ASYNC_INFO_LOG`:异步 INFO 日志 Appender(部分服务使用 TLog 增强版)
  - `file_error`:ERROR 级别独立文件输出
  - `http_trace`:HTTP 跟踪日志(独立 logger 名称 `httptraceLog`)
- **日志格式**:统一使用 `%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n` 模式,包含时间、上下文名、线程、级别、类名和消息。
- **根日志级别**:root 默认 level 为 `debug`(控制台)和 `info`(文件输出)。
- **上下文命名**:所有服务统一设置 `<contextName>febs</contextName>`,便于多服务日志聚合时区分来源。
- **AOP 操作日志**:
  - 通过 `@LogExecution` 注解标记需要记录执行日志的方法
  - `LogAspect` 切面拦截注解方法,记录方法名、参数、操作人、IP、耗时等信息
  - 支持 TRACE/DEBUG/INFO/WARN/ERROR 五种级别,由注解属性控制
  - 同时通过 `@Log` 注解(未在当前代码中展示但被引用)记录用户操作日志到 `SysLog` 表
- **日志分层存储**:
  - `log/info/`:常规业务日志
  - `log/error/`:错误日志
  - `log/heart/`:心跳日志(已注释,当前未启用)
  - `log/httptrace/`:HTTP 请求跟踪日志

## 4. 约定与约束
- **日志框架统一**:所有服务必须使用 Logback 作为日志实现,禁止直接使用 `System.out.println` 或第三方日志框架。
- **注解式日志**:业务方法日志记录必须通过 `@LogExecution` 注解声明,禁止在业务代码中直接调用 `log.info()` 等方式记录结构化操作日志。
- **异步输出**:INFO 级别日志必须通过异步 Appender 输出,避免阻塞主业务流程。
- **日志轮转策略**:所有文件 Appender 必须使用 `SizeAndTimeBasedRollingPolicy`,按天和大小双维度轮转,保留天数不超过 15 天。
- **敏感信息脱敏**:日志中不得直接输出密码、Token 等敏感信息,需通过工具类进行脱敏处理。
- **链路追踪**:推荐使用 TLog 提供的异步 Appender 以支持跨线程链路追踪。
- **异常日志**:全局异常处理器(`GlobalExceptionHandler`)会将异常信息统一记录到 `SysLog` 表,确保错误可追溯。

## 5. 日志级别策略
- **DEBUG**:仅控制台输出,生产环境不输出到文件
- **INFO**:异步文件输出,记录业务关键流程
- **WARN**:与 INFO 同路径输出,记录警告信息
- **ERROR**:独立文件输出,便于快速定位错误
- **TRACE**:仅在开发环境开启,记录详细执行轨迹

该日志系统通过标准化的 Logback 配置、AOP 切面和统一的实体模型,实现了微服务架构下的集中化、结构化、可追溯的日志管理。
相关推荐
鲲穹AI种草4 小时前
AI 壁纸生成工具怎么选?鲲穹 AI 壁纸工具功能实测与横向对比
人工智能·壁纸生成工具
科技林总4 小时前
向量与重排模型
人工智能
楚楚2514 小时前
2026企业AI办公工具选型指南:落地评估与效果衡量体系
大数据·人工智能
小马9265 小时前
2026年9月30日热点速览:AI智能体大战升级、房贷贴息新政落地、硬科技多点突破
人工智能·科技·chatgpt
SPFFC189380330535 小时前
旋翼式水表工作原理智能水表工作原理
人工智能·显示器·智能手表·平板·大屏端
stormzhangV5 小时前
A 社为什么反超了
人工智能·ai编程·claude
库拉镜像AI牛牛5 小时前
工作室标准化出片体系:知漫剧小说转漫剧落地应用
人工智能
正在走向自律6 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
空堂与归6 小时前
Hinton 首篇 RSI 论文:AI 自我进化怎么闭环?
人工智能·ai
2601_956743686 小时前
上海GEO营销工程实践:知识库构建、AI内容生产、官网承接与监测优化闭环评估
人工智能·ai·geo·上海