# 需求

为日志系统提供一种机制，能够记录和追踪跨越不同对象和方法的调用链，以增强日志的可读性和可观测性。

## 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)
