有不同的方式记录消息,按死亡顺序排列:

致命的错误警告信息调试,调试跟踪

我如何决定何时使用哪个?

什么是好的启发式方法?


当前回答

我一直在考虑警告第一个日志级别,这肯定意味着存在问题(例如,可能配置文件不在应该的位置,我们将不得不使用默认设置运行)。对我来说,一个错误意味着软件的主要目标现在不可能实现,我们将尝试彻底关闭。

其他回答

这是一个古老的话题,但仍然相关。本周,我为同事们写了一篇关于它的小文章。出于这个目的,我还制作了这个备忘单,因为我在网上找不到。

我建议采用Syslog严重级别:调试、信息、通知、警告、错误、严重、警报、紧急。看见http://en.wikipedia.org/wiki/Syslog#Severity_levels

它们应该为大多数用例提供足够的细粒度严重性级别,并被现有的日志解析器识别。当然,您可以根据应用程序的要求,自由地只实现一个子集,例如调试、错误、紧急情况。

让我们对已有多年的应用程序进行标准化,而不是为我们制作的每个不同应用程序制定自己的标准。一旦您开始聚合日志并尝试检测不同日志之间的模式,这将非常有用。

从…起https://sematext.com/blog/slf4j-tutorial/:

TRACE–具有此级别的日志事件是最细粒度的,通常不需要,除非您需要完全了解应用程序中和所使用的第三方库中发生的情况。您可以期望TRACE日志记录级别非常详细。调试–与TRACE级别相比粒度更小,但仍比日常使用中需要的更多。DEBUG日志级别应用于深入诊断和故障排除所需的信息。INFO–表示发生了什么、应用程序处理了请求等的标准日志级别。使用INFO日志级别记录的信息应该是纯粹的信息,不定期查看这些信息不会导致丢失任何重要信息。警告–指示应用程序中发生意外事件的日志级别。例如,一个问题,或者一个可能会干扰其中一个进程但整个应用程序仍在运行的情况。错误–当应用程序遇到阻止一个或多个功能正常运行的问题时,应使用的日志级别。当其中一个支付系统不可用时,可以使用ERROR日志级别,但仍然可以选择在电子商务应用程序中检查购物篮,或者当您的社交媒体日志选项由于某种原因无法工作时。您还可以看到与异常相关的ERROR日志级别。

错误是一种错误的东西,很明显是错误的,没有办法解决它,它需要被修复。

警告是一种模式的信号,这种模式可能是错误的,但也可能不是。

话虽如此,但我无法提出一个警告的好例子,这不是一个错误。我的意思是,如果您遇到了记录警告的麻烦,那么不妨解决根本问题。

然而,像“sql执行时间过长”这样的情况可能是一个警告,而“sql执行死锁”是一个错误,所以可能毕竟存在一些情况。

正如其他人所说,错误是问题;警告是潜在的问题。

在开发中,我经常使用警告,在警告中,我可能会放置相当于断言失败,但应用程序可以继续工作;这使我能够发现这个案子是否真的发生过,或者这是我的想象。

但是的,它归结到恢复性和现实性方面。如果你能恢复,那可能是一个警告;如果它导致某个东西实际失败,那就是一个错误。