• 为什么日志只应该有三个级别


    日志只需要三种级别:normal、error、debug。

    其中normal用来记录一般性的程序运行信息,error用来记录必须处理的错误信息,debug用来记录详细的调试信息。程序普通运行的时候只开normal和error日志;当需要追踪问题的时候再开debug日志。

    这分别代表了我们能够做出的三种反应:日常查看状态(normal)、发现需要关注解决的问题(error)、调试分析问题(debug)。

    因为我们只能对日志做出这三种反应,因此日志只应该被分成这三个级别。

    java里面的日志是被分成九个级别的,那基本上只造成了混乱。比如warning级别,这纯粹是扯淡,没人知道该怎么处理warning,是必须处理掉,还是不用处理?在现实世界里,所有warning实际上都会被无视,变得无意义。

    作为佐证,我曾经见过某大公司的一些java项目,那些项目的日志都乱七八糟,因此日常维护的时候也基本上都忽略了所有日志。之所以大多数程序员都不知道该怎么写日志,是因为他们缺乏一个可执行的指引:什么信息该写哪个类型的日志。经常有程序员会把必须处理的错误写在warning里面,导致error日志不能覆盖所有必须处理的错误,从而使得监控error日志变得无意义。

    之所以日志必须只分为三个级别,是为了能给程序员提供一份清晰的指引:凡是需要处理的错误,都必须写error日志;其他信息都写normal,而normal信息都是不用处理的,不影响系统运行的;调试信息写debug。


    Q:当收到一个异常的request的时候,是否需要写error日志?

    A:如果这个异常request是预期之内的,则写normal日志;如果这个request是需要程序员或者运维人员进行处理的,则写error日志。

    Q:当系统启动失败的时候,应该写什么日志?

    A:启动失败是不应该的,需要运维人员至少看看为什么。因此需要写error日志。

    Q:当系统内部buffer队列满了的时候,应该写什么日志?

    A:在设计正确的系统里面,正常情况下不应该出现buffer满了的情况。这种情况需要程序员改代码或者运维改配置。因此需要写error日志。


  • 相关阅读:
    FreeMarker中<#include>和<#import>标签的区别
    freemarker自定义标签(与java合用)
    JSP页面中验证码的调用方法
    js关闭或者刷新页面后执行事件
    动态生成能够局部刷新的验证码【AJAX技术】---看了不懂赔你钱
    Delphi中Indy 10的安装和老版本的卸载
    在Delphi中关于UDP协议的实现
    Easy smart REST with kbmMW
    Delphi事件的广播
    js调用跨域
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330358.html
Copyright © 2020-2023  润新知