20 | 日志处理(上):如何设计日志包并记录日志?
该思维导图由 AI 生成,仅供参考
如何设计日志包
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了设计和开发日志包的重要性和功能。作者首先强调了记录日志的必要性,包括在开发、测试期间的Debug,故障排除,数据分析,监控告警等方面的作用。然后详细介绍了如何设计日志包,包括基础功能、高级功能和可选功能。基础功能包括支持基本的日志信息、支持不同的日志级别、支持自定义配置和支持输出到标准输出和文件。高级功能包括支持多种日志格式、按级别分类输出、结构化日志、日志轮转和Hook能力。可选功能包括支持颜色输出、兼容标准库log包和支持输出到不同的位置。此外,文章还提到了设计日志包时需要关注的几个层面,如高性能、并发安全、插件化能力和日志参数控制。最后,文章指出了如何记录日志的重要性,包括在何处打印日志、在哪个日志级别打印日志和如何记录日志内容。整体而言,本文为读者提供了设计和开发日志包的指导,使读者能够更好地记录日志并进行故障排除、数据分析和监控告警。 文章还介绍了分布式日志解决方案EFK/ELK,通过Elasticsearch、Filebeat、Kibana等组件实现日志的收集、处理和展示。这些解决方案在实际项目开发中能够提高日志管理的效率和可靠性。最后,文章提出了课后练习,鼓励读者思考项目中日志包需要的功能和日志记录规范,并欢迎读者分享讨论。 总的来说,本文内容丰富,涵盖了日志包设计和开发的重要性、功能、分布式日志解决方案以及课后练习,为读者提供了全面的指导和思考。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(15)
- 最新
- 精选
- XI请问下老师,大型的分布式服务都需要日志的链路追踪,日志的trance_id 由网关生成,每个微服务在接受请求的时候也应当必传trance_id 作为请求记录,大公司是这样设计的吗?
作者回复: 大公司也是这么设计的。
2021-07-1312 - 先听body好像只可以读取一次,请问老师有没有什么好的办法来解决这个问题呢?
作者回复: 可以看下github.com/tpkeeper/gin-dump包的实现,里面会dump http request body
2021-08-0227 - Sch0ng对内,日志的作用是排查问题。 对外,日志的作用是跟人PK的时候为自己提供有力的证据。 记录日志是一个高频操作,需要简单、高性能。 实际项目里,如果不刻意治理,即使有日志规范,也是约等于没有。
作者回复: 理解的到位!
2021-08-115 - timidsmile对于日志轮转功能,其实我不建议在日志包中添加 ------ 这里使用Logrotate的话,是使用logrotate的哪种方式呢? * copytruncate 方式的话,对于大日志应该有性能问题吧? * create 方式的话,是需要通过接收特殊signal的方式来实现重新打开日志吗?考虑到很多信号已被用到shutdown中,这里有signal推荐吗?
作者回复: copytruncate比较好吧,inode不变,这样应用程序可以继续写文件,也比较简单。一般一个系统一天的日志50G算是比较大的了,copy 50G的日志,不会给服务器带来压力的。
2021-07-125 - helloworld“日志内容应该小写字母开头,以英文点号 . 结尾”,如果日志结尾有符号,在代码静态检查时,提示日志内容结尾不应有符号的,这块和您说的不一致
作者回复: 可以不以 . 号结尾,其实影响不大,形成规范即可。
2021-07-105 - lesserror孔老师,关于:拓展内容:分布式日志解决方案(EFK/ELK)。 这里有没有好的实践文章呢? 没有自己动手实践过,想学习一下。
作者回复: 暂时没有,我从网上搜了一篇,你可以参考下:https://www.cnblogs.com/ludongguoa/p/15318282.html
2021-10-074 - 疯琴感觉ELK组件的资源消耗和es强大的全文索引能力对于单纯的日志应用有些重了,大公司有充足的硬件资源和技术团队运维ELK组件倒是用起来比较省事,还可以考虑loki。
作者回复: 是这样的的。方案需要根据实际情况来制定。
2021-10-223 - 授人以🐟,不如授人以渔孔老师,在「在何处打印日志」这个地方,为什么特意提出:写操作时必须打印日志?会引发什么严重的问题?那应该在日志上输出什么信息呢?
作者回复: 读操作,一般是类似List、Get这种接口,如果报错,影响不大。但是写操作,一般是Create、Update这类接口,如果失败会导致功能性接口失败,影响较大。 读操作一般是幂等的,写操作往往不是幂等的,写操作失败,可能还要清理脏数据,比较麻烦。
2021-10-142 - Struggle~honor想请教下老师,大公司里面,我们的应用到部署在K8s上面,那么这些应用程序的日志应该怎样做持久化呢
作者回复: 日志持久化可以试试EFK的解决方案。
2021-12-191 - 张先森、老师,golang单例模式适用于哪些场景? 日志对象是否需要是单例?
作者回复: 使用场景:只需要初始化一次, 程序中需要全局引用的对象。 日志对象,可以使用单例模式。
2021-09-081