日志为什么需要分级?
date
May 15, 2023
slug
Understanding-Logging-Levels:-What-They-Are-&-How-To-Use-Them
status
Published
tags
Code
Review
summary
了解日志级别: 它们是什么以及如何使用它们
type
Post
Created Time
Oct 28, 2023 01:45 PM
Updated Time
Oct 28, 2023 01:45 PM
AI summary
Status
什么是日志等级?
日志等级或日志严重性是一种信息,告诉您给定的日志消息有多重要。它是一种简单但非常强大的区分日志事件的方式。如果您的应用程序正确使用了日志级别,您只需要首先查看严重性。它会告诉您是否可以在值班夜间继续睡觉,还是您需要立即起床,然后在卧室和客厅的笔记本电脑之间做出一个最佳的选择。
您可以将日志级别视为:过滤系统状态和关键信息的一种方法。日志级别可以帮助减少信息噪声和警报疲劳。
日志等级的起源
在继续描述日志级别本身之前,了解日志级别的来源将是很好的。一切都始于 syslog。在 80 年代,由 Eric Allman 开发的邮件守护进程项目 Sendmail 需要一个日志记录解决方案。这就是 Syslog 的诞生。它很快被 Unix 系统中的其他应用程序采用,并成为了一种标准。顺便说一句,在 Sematext,我们支持使用 Sematext Logs,我们的日志管理工具,使用 Syslog 格式。
Syslog 带来了非常严格的级别的概念,这些级别现在在 syslog 标准中定义。Syslog 将严重程度分为以下几种级别:
- Emergency
- Alert
- Critical
- Error
- Warning
- Notice
- Informational
- Debug
在 80 年代之后,编程语言正在发展,并引入了不同的日志框架。现在,每种编程语言都有自己的日志框架,允许您以各种格式(如 JSON)保存数据。在大多数情况下,您可以将数据发送到不同的目的地,如文本文件、syslog 或 Elasticsearch。但是除了格式和可能的目的地之外,大多数日志框架共同的一件事就是日志事件的级别。
有哪些常用的日志等级?如何选择和使用这些级别?
现在最常用的日志等级包含以下几种:
- TRACE - 最低等级的日志级别。在需要完全了解应用程序和引用的第三方库内部发生了什么的时候使用。你可以用 TRACE 级别的日志记录非常详细的信息。例如,您可以使用它为算法中的每个步骤或代码中每个带参数的单个查询添加注释。
- DEBUG - 次低级的日志级别。 DEBUG 日志级别应用于可能需要诊断问题、故障排除或在测试环境中运行应用程序,是为了确保一切正常而输出的信息。
- INFO - 表示发生了某些事件、应用程序进入了某种状态等的标准日志级别。例如,您的授权 API 的控制器可能会使用具有关于哪个用户请求授权的信息的 INFO 日志级别,如果授权成功或失败。使用 INFO 日志级别记录对应的详细信息,此级别的日志不需要定期查看,它们不会导致遗漏任何重要信息。
- WARN - 表示应用程序中发生了意外事件、问题或可能干扰一个或多个进程的情况的日志级别。但这并不意味着应用程序失败。 WARN 级别应该用于意外情况,但代码可以继续工作的情况。例如,发生解析错误导致某个文档未被处理。
- ERROR - 应在应用程序遇到阻止一个或多个功能正常运行的问题时使用的日志级别。当其中一个付款系统不可用或应用程序由于某种原因无法登录和使用时,可以使用 ERROR 日志级别。
- FATAL - 告诉应用程序遇到了事件或进入了某种状态,在此状态下,至少一个关键业务功能已不再工作的日志级别。当应用程序无法连接到诸如数据库之类的关键数据存储或所有付款系统都不可用且用户无法在您的电子商务系统中结账时,可以使用 FATAL 日志级别。
日志级别 | 重要性 |
FATAL | 一个或多个关键的业务功能停止工作,或整个系统不能满足业务功能的需要。 |
ERROR | 一个或多个功能停止工作,使得一部分功能无法正常使用。 |
WARN | 应用程序内部发生了意想不到的行为,但它能继续使用,关键业务功能能够预期运行。 |
INFO | 发生了一个事件,该事件纯粹是为了记录一些信息,可以忽略。 |
DEBUG | 在软件调试期间,当需要更细化的信息时,使用的事件日志级。 |
TRACE | 用于描述和记录代码执行过程和事件的日志级别,在标准操作中可以忽略,但在扩展的调试过程中可能是有用的。 |
结论
在开发应用程序时选择正确的日志级别是至关重要的。它在编码时可能不可见,但对于每个使用日志查找问题、故障排除、创建警报或定期查看日志的人来说,肯定是大有裨益的。在处理今天系统产生的不断增长的日志消息时,过滤、警报和轻松找到正确的信息是非常重要的。虽然一些外部的服务和产品能够帮助我们处理日志,但我们也需要认真考虑:我们应该发送给它们什么内容?正如人们所说的——垃圾进,垃圾出。记住这一点,优化你的日志使其能够更好的为你所用。