优雅打日志

170 阅读1分钟

针对项目内使用的阿里云 SLS 日志一些优化点。

日志配置

1. 阿里云日志 SDK 可以封装打印位置、日志内容、服务名、线程名、时间、异常等自定义内容,不需要在日志内容中重复打印。

以下截图的 log 字段就是重复的,不需要额外打印。

image.png

image.png

2. 阿里云配置的 endpoint 配置建议用内网,这样看到的 ip 就是内网的,可以定位到日志在哪台机器上。

3. 使用异步打印。

打印规范

正确使用日志等级

1. error 级别只给异常全局捕获用,不手动打印。

错误案例:

image.png

2. warn 给业务错误用。

正确案例:

image.png

3. info 给关键日志和业务流程中。每个 if 分支前都先打个日志。

正确案例:

image.png

4. debug 给只在测试环境打印,不在线上环境打印的用。一般打印的日志的会更详细。

正确案例:

image.png

其他两种一般用不到就不多 BB。

打印内容

1. 只打印关键日志。返回列表的这种日志尽量不要打了。

错误案例:

image.png

正确案例:

image.png

2. 不要打印无效信息。

错误案例:

image.png

这种没有参数的日志,上帝也不知道是哪条数据执行了 type 1 逻辑。

3. 优先使用占位符 {} 而不是拼接字符串。

image.png

4. 合理打印异常

image.png

5. 日志文件隔离

通常来说服务间调用时长状态日志给运维分析的,info、warn 和 error 区分开,但 K8s 和阿里云的查询分析、监控都有,如果只有本地服务器存储需要隔离。