日志主要是用来记录系统的问题信息的,用户做了哪些操作,发生了什么错误,并且进一步定位问题的原因。日志可以帮助我们快速地定位问题。
1、打印调试:即可以用日志记录变量或记录一段逻辑。记录程序运行的流程,即程序运行了那些代码,方便排查逻辑问题。
2、问题定位:程序出异常或者出谷中时快速定位问题,方便后期解决问题。因为线上无法debug,在测试环境模拟一套生产环境,费时费力。所以依靠日志记录的信息定位问题,这点非常重要。
3、用户行为日志:记录用户的操作欣慰,用于大数据分析,比如监控、风控、推荐等等。这种日志,一般是给其他团队分析使用,而且可能是多个团队,因此一般会有一定的格式要求,开发者应该按照这个格式来记录,便于其他团队的使用。当然,要记录哪些行为、操作,一般也是约定好的,因此,开发者主要是执行的角色。
4、 根因分析:即在关键地方记录日志。方便在和各个终端定位问题时,可以定位到到底是谁的问题
- 不影响系统正常运行;
- 不允许产生安全问题;
- 不允许输出机密信息;
- 日志可供开发人员定位问题的真正原因;
- 日志可供监控系统自动监控与分析;
日志打印原则:
- 生产环境禁止输出debug日志;有选择地输出info日志
- 异常ERROR信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么通过关键字throws往上抛出。
- FATAL:需要立即被处理的系统级错误。系统需要将错误相关痕迹以及错误细节记录FATAL日志中,方便后续人工回溯解决。
- ERROR:系统发生了错误事件,但仍然不影响系统的继续运行。系统需要将错误或异常细节记录ERROR日志中。
- error主要针对一些不可预知的错误信息。
- error日志内容一定要详实。
- error日志一定是全局统一收集的。
- 避免在每个类中收集到处都是try: exception。
- WARN:系统在业务处理时触发了异常流程,但系统可恢复到正常态,下一次业务可以正常执行。如程序调用了一个旧版本的接口,可选参数不合法,非业务预期的状态但仍可继续处理等
- INFO:记录系统关键信息,旨在保留系统正常工作期间关键运行指标,开发人员可以将初始化系统配置、业务状态变化信息,或者用户业务流程中的核心处理记录到INFO日志中,方便日常运维工作以及错误回溯时上下文场景复现
- DEBUG:可以将各类详细信息记录到DEBUG里,起到调试的作用,包括参数信息,调试细节信息,返回值信息等等。
- TRACE:更详细的跟踪信息。
上述日志级别从高到低排列。生产系统一般只打印INFO 级别以上的日志,对于 DEBUG 级别的日志,只在测试环境中打印。打印错误日志时,需要区分是业务异常(如:用户名不能为空)还是系统异常(如:调用 会员核心异常),业务异常使用 warn 级别记录,系统异常使用 error 记录。
1、if..else。
if..else判断是否正确的时候需要在else加入warn日志
2、不打印无意义的日志。
日志里边要带有业务信息,否则意义不大。
错误:logger.Error("Consume message faild!!!")
正确:logger.Error=("Consume message faild, msgId{}".format(id))
3、不推荐使用字符串拼接,建议使用占位符。
4、循环体内不要打印Info日志。
5、打印日志打码任何情况下都不允许发生异常。
6.1 全局业务日志(GwsLog)
目前主要用于问题诊断和排查,主要包括time、appName、hostName、logLevel、TID、msg。
- time:是日志打印时间,不是服务请求时间,也不是服务响应时间。
- TID:跟踪ID,skywalking agent自动生成。TID是用户每次请求的ID,触发的不同服务都会标记该ID。
- msg:自定义输出内容。
6.2 接口访问日志(AccessLog)
记录接口访问的信息,主要用于日志审计。主要包括
日志审计:对每天所记录的信息进行审计和检查,将涉及到的重要信息进行记录。
6.3 业务埋点日志(BizLog)
记录业务埋点日志,主要用于大数据分析。
- accessTime:日志打印时间,不是用户请求时间。
- eventTopic:记录埋点的事件名,方便实时计算或同步进行数据筛选,和LogHub中__topic__对应。
- productLine:数据埋点是跨产品线,模板化设计的,枚举值包括youximao、eusdk、jiaoyihu、bt等。
- msg:开发人员自定义你输出内容。主要用于埋点字段的数据记录,为了防止logHub在生产端解析是出错而导致数据丢失,msg将所有埋点字段进行打包,在消费端(spark实时计算解析或者投递前logHub解析)再进行解析,即保证了数据安全,又解决了数据解析问题。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-cpgl/55687.html