zoukankan      html  css  js  c++  java
  • 为什么日志只应该有三个级别

    日志只需要三种级别: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日志。


  • 相关阅读:
    linux进程管理
    使用PL/SQL Developer 学习pl/sql
    Linux入门到放弃之一《在VMware虚拟机中安装Linux系统(RedHat)》
    解决Java连接Oracle 12c存在的问题
    Linux安装64位Mysql5.7.22
    在centos下启动nginx出现Failed to start nginx.service:unit not found
    windows10下IntelliJ IDEA使用logback设置日志输出目录
    Windows下mysql5.6升级到5.7的方法
    Spring+Hibernate+Struts2整合之实现登录功能
    Hibernate关系映射之many-to-many(多对多)
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330358.html
Copyright © 2011-2022 走看看