主要观点:日志是维护网络应用的关键工具,但我们常做错。不同语言和库的日志级别不同且不一致,常见日志使用方式也有问题,实际中只需 ERROR 和 INFO 两个级别,用结构化日志等方式可提升日志可用性。
关键信息:
- 不同语言的日志级别举例,如 Rust 的 tracing 有 ERROR、WARN、INFO、DEBUG、TRACE 五级;Python 的 logging 有 CRITICAL、ERROR、WARNING、INFO、DEBUG 五级;log4j 有 FATAL、ERROR、WARN、INFO、DEBUG、TRACE 六级。
- 日志的用途包括发现错误、调试问题、理解使用和工作原理等,可分为唤醒和修复两类。
- 实践中只需 ERROR 和 INFO 级别,其他级别如 WARNING 可根据情况转为 INFO 或 ERROR,DEBUG 和 TRACE 不适合在生产环境使用。
- 提升日志可用性的方法,如添加请求/跟踪 ID、时间戳、相关 ID、审计信息、设置标志、日志来源等。
重要细节: - 日志级别不一致导致无通用指导,实际中单个日志级别难以调试,需结合所有级别。
- 避免添加日志后又删除,应保证有足够日志理解问题。
- 作者对日志级别并非教条,只是认为多数情况下只需关注唤醒或不唤醒。
总之,要重视日志的作用,采用合适方式提升日志可用性,以更好地维护网络应用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。