针对项目内使用的阿里云 SLS 日志一些优化点。
日志配置
1. 阿里云日志 SDK 可以封装打印位置、日志内容、服务名、线程名、时间、异常等自定义内容,不需要在日志内容中重复打印。
以下截图的 log 字段就是重复的,不需要额外打印。
2. 阿里云配置的 endpoint 配置建议用内网,这样看到的 ip 就是内网的,可以定位到日志在哪台机器上。
3. 使用异步打印。
打印规范
正确使用日志等级
1. error 级别只给异常全局捕获用,不手动打印。
错误案例:
2. warn 给业务错误用。
正确案例:
3. info 给关键日志和业务流程中。每个 if 分支前都先打个日志。
正确案例:
4. debug 给只在测试环境打印,不在线上环境打印的用。一般打印的日志的会更详细。
正确案例:
其他两种一般用不到就不多 BB。
打印内容
1. 只打印关键日志。返回列表的这种日志尽量不要打了。
错误案例:
正确案例:
2. 不要打印无效信息。
错误案例:
这种没有参数的日志,上帝也不知道是哪条数据执行了 type 1 逻辑。
3. 优先使用占位符 {} 而不是拼接字符串。
4. 合理打印异常
5. 日志文件隔离
通常来说服务间调用时长状态日志给运维分析的,info、warn 和 error 区分开,但 K8s 和阿里云的查询分析、监控都有,如果只有本地服务器存储需要隔离。