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