19 lines
1.1 KiB
Markdown
19 lines
1.1 KiB
Markdown
# 记录位置
|
|
|
|
## Controller
|
|
|
|
Controller使用`@DefaultControllerLog`切面统一记录访问日志, 并且实现接口大面积失效报警功能;
|
|
|
|
需要一个 try-catch 块来捕获 Controller 内部的所有异常, 并在 catch 块中记录**兜底**异常日志, 如果是下游抛出的异常, 则交给下游记录日志;
|
|
|
|
## Service
|
|
|
|
Service层是业务核心, 需要在**核心对象创建/删除**, **状态变化**, **数据同步与核心流程结束**, 等具有业务里程碑意义的场景记录日志, 以便于事后追踪用户行为和系统状态;
|
|
|
|
同样, 如果是下游抛出的异常, 则由下游处理, 不应该在 Service 层重复记录日志;
|
|
|
|
## Utils & 跨服务调用 (RPC/HttpClient/Redis/DB/SDK)
|
|
|
|
Utils 和跨服务调用是网络波动极其多发的灾区, 需要在**调用前切面/钩子**记录发起目的地名称和请求摘要, 在**调用返回**时必须记录耗时(ms)以及对方返回的关键状态(如 HTTP Code 或三方的业务状态码), 以便于事后追踪网络问题和性能瓶颈;
|
|
|
|
同样, 如果是下游抛出的异常, 则由下游处理, 不应该在 Utils 层重复记录日志; |