制定方案
This commit is contained in:
21
design/provide-logger-with-mothed/index.md
Normal file
21
design/provide-logger-with-mothed/index.md
Normal 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)
|
||||
Reference in New Issue
Block a user