制定方案

This commit is contained in:
2025-11-03 20:39:31 +08:00
parent d7c7b56b95
commit b6c2fa58f5
6 changed files with 141 additions and 29 deletions

View File

@@ -0,0 +1,21 @@
# 需求
为日志系统提供一种机制,能够记录和追踪跨越不同对象和方法的调用链,以增强日志的可读性和可观测性。
## issue
http://git.huangwc.com/pig/pig-farm-controller/issues/56
## 描述
### 初始问题
在复杂的业务流程中,一个请求可能会流经多个服务或控制器。为了追踪一个完整的操作流程,开发者不得不在每个方法的日志中手动添加上下文信息(如 `actionType`),这非常繁琐且容易出错。
### 期望的演进
1. **初步设想**: 提供一个 `logger.With()` 方法,调用后返回一个携带预设信息的日志记录器副本,后续日志自动附带此信息。
2. **解决上下文覆盖**: 简单的 `With("action", "some_action")` 会导致同名字段被覆盖。因此,期望能将调用链信息存储在数组中,并在打印时拼接,如 `action: "action1·action2"`
3. **最终目标 (可观测性)**: 进一步区分“对象”和“方法”,构建出更具表现力的调用链。例如,当 `userController``Create` 方法调用 `userService``Create` 方法时,日志应能清晰地展示 `trace: "userController.Create->userService.Create"` 这样的调用关系。
## 实现方案
[实现方案](./implementation.md)