Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 日志级别-Logback-分配日志级别的经验法则_Logging_Logback - Fatal编程技术网

Logging 日志级别-Logback-分配日志级别的经验法则

Logging 日志级别-Logback-分配日志级别的经验法则,logging,logback,Logging,Logback,我正在我当前的项目中使用 它提供了六个级别的日志记录:跟踪调试信息警告错误关闭 我正在寻找一条经验法则来确定常见活动的日志级别。 例如,如果线程被锁定,那么应该将日志消息设置为调试级别还是信息级别。 或者,如果正在使用套接字,则应在调试级别或跟踪级别记录其特定id 我将感谢您为每个日志级别提供更多示例的答案 我主要构建大规模、高可用性类型的系统,因此我的回答偏向于从生产支持的角度来看它;也就是说,我们大致分配如下: 错误:系统处于困境,客户可能受到影响(或很快会受到影响),修复可能需要人工干预

我正在我当前的项目中使用

它提供了六个级别的日志记录:跟踪调试信息警告错误关闭

我正在寻找一条经验法则来确定常见活动的日志级别。 例如,如果线程被锁定,那么应该将日志消息设置为调试级别还是信息级别。 或者,如果正在使用套接字,则应在调试级别或跟踪级别记录其特定id


我将感谢您为每个日志级别提供更多示例的答案

我主要构建大规模、高可用性类型的系统,因此我的回答偏向于从生产支持的角度来看它;也就是说,我们大致分配如下:

  • 错误:系统处于困境,客户可能受到影响(或很快会受到影响),修复可能需要人工干预。“凌晨2点规则”适用于这里-如果你在待命,如果发生这种情况,你想在凌晨2点被叫醒吗?如果是,则将其记录为“错误”

  • 警告:发生意外的技术或业务事件,客户可能会受到影响,但可能不需要立即进行人工干预。待命人员不会立即接到电话,但支持人员希望尽快审查这些问题,以了解其影响。基本上是任何需要跟踪但可能不需要立即干预的问题

  • 信息:我们希望看到大量信息,以防我们需要对问题进行取证分析。系统生命周期事件(系统启动、停止)转到此处。“会话”生命周期事件(登录、注销等)转到此处。还应考虑重大边界事件(例如数据库调用、远程API调用)。典型的业务异常可能出现在此处(例如,由于凭据错误而导致登录失败)。您认为在大批量生产中需要看到的任何其他事件都在这里

  • 调试:几乎所有不让“信息”剪切的东西。。。任何有助于跟踪系统流程和隔离问题的消息,尤其是在开发和QA阶段。我们使用“调试”级别的日志来进入/退出大多数非平凡的方法,并在方法内部标记有趣的事件和决策点

  • 跟踪:我们不经常使用此功能,但这将用于非常详细的、潜在的高容量日志,即使在正常开发过程中,您通常也不希望启用这些日志。示例包括转储完整的对象层次结构、在大型循环的每次迭代期间记录某些状态等

与选择正确的日志级别一样或更重要的是,确保日志有意义并具有所需的上下文。例如,您几乎总是希望在日志中包含线程ID,以便在需要时可以跟踪单个线程。您可能还希望使用一种机制将业务信息(例如用户ID)关联到线程,以便它也被记录下来。在日志消息中,您需要包含足够的信息,以确保消息可以执行。类似于“FileNotFoundException Capture”的日志不是很有用。更好的消息是“尝试打开配置文件时捕获FileNotFound异常:/usr/local/app/somefile.txt.userId=12344。”

还有很多很好的日志指南。。。例如,以下是一个编辑过的代码段:

  • 错误-其他运行时错误或意外情况。期望这些在状态控制台上立即可见
  • 警告-使用不推荐的API、API使用不当、“几乎”错误、其他不需要或意外的运行时情况,但不是 必然是“错的”。希望这些信息能在计算机上立即可见 状态控制台
  • 信息-有趣的运行时事件(启动/关闭)。希望在控制台上可以立即看到这些内容,所以要保守并保持 最低限度
  • 调试-有关通过系统的流的详细信息。希望这些仅写入日志
  • 跟踪-更详细的信息。希望这些仅写入日志

我认为,我的方法更多的是从开发角度而不是从运营角度出发,是:

  • 错误表示无法完成某些任务的执行;电子邮件无法发送,页面无法呈现,某些数据无法存储到数据库,诸如此类。肯定出了什么问题
  • 警告表示发生了意外情况,但执行可以继续,可能处于降级模式;配置文件丢失,但使用了默认值,价格被计算为负值,因此被钳制为零,等等。有些地方不正确,但还没有完全出错-警告通常是很快就会出错的迹象
  • Info表示发生了正常但重要的事情;系统启动、系统停止、每日库存更新作业运行等等。这些内容不应该持续不断,否则就太多了
  • 调试意味着发生了一些正常的、无关紧要的事情;一个新用户来到这个网站,一个页面被呈现,一个订单被接受,一个价格被更新。这是从信息中排除的东西,因为信息太多了
  • Trace是我从未实际使用过的东西

对于其他答案,我的框架具有几乎相同的级别:

  • 错误:应用程序上的关键逻辑错误,如数据库连接超时。需要在不久的将来进行bug修复的事情
  • 警告:不是突破性的问题,而是需要注意的东西。如未找到请求的页面
  • 信息:在函数/方法的第一行中使用,用于显示已调用的过程或已确定的步骤,如插入