Mulavar commented on issue #1477:
URL: https://github.com/apache/dubbo-go/issues/1477#issuecomment-965556745
Dubbo-go 现存日志问题:
1. 无法清除掌握系统的运行状态;
2. 系统出现问题较难快速定位。
1. 明确日志级别
-
Debug:面向开发者,主要集中在具体参数的打印,方便调试追踪错误,如系统读入的配置数据、底层通信协议发送/接收请求时序列化/反序列化的一些行为,但那些在开发过程中为了调试方便而加入的临时日志应该删除。
- Info:面向所有人,需要在关键流程处打印,如配置中心启动、元数据中心启动、注册中心启动、服务发布成功或监听的服务元数据发生变更等。
- Warn:面向所有人,预期会发生且能够被正常处理的异常,且不影响 dubbo-go 正常运行。
- Error:面向所有人,无法被正常处理的异常,会影响到正常运行,如注册中心启动失败、服务暴露失败等。
TODO
- 设置日志默认级别设置为 Info
- 统一日志内容格式:[Func] [Description], [Message]. [Params]
- Func:具体函数名或操作名,要求能快速定位到报错位置。
- Description:大写字母开头,如果是 Error 日志则为错误描述信息,简要描述发生了什么错误;如果是 Warn 日志则
- Message:大写字母开头,错误的可能原因(Maybe),以及可能有效的解决(Probably need to do)方式。
- Params:与该次错误相关的参数列表。
对 Info 日志和 Debug 日志来说,Description 和 Message 可以认为是等价的,只填其中一个即可,因此 Info、Debug
日志的的格式又可以为:[Func] [Message]. [Params]。
注意事项
1. 拼接错误信息时不要使用 fmt.Sprintf,会造成逃逸,引起 GC。
2. 关于 error 的传递,尽量不要使用 errors.New,推荐提前定义好 error 常量,并以 wrapper
的形式包装返回给上层,这样上层能通过 errors.Is 进行类型判断。
参考
https://zhuanlan.zhihu.com/p/27363484
https://github.com/alibaba/sentinel-golang/pull/293
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]