良好的日志记录规范

基本原则:

1、  在程序开始运行应该以INFO记录程序开始运行的消息。 

2、  在程序初始化过程中,如果影响程序主体正常运行错误出现,应该以FATAL记录出现错误的函数名、事件和错误号;如果只是一个不影响程序正常功能的模块出现错误,则应该以ERROR记录出现错误的函数名、模块名、事件和错误号。 

3、  在程序初始化完成后,应该以INFO记录程序初始化完成的消息。 

4、  在函数的入口,如果需要验证参数,则可以以DEBUG的形式输出参数的信息。如果重要参数不正确,则应该以ERROR输出。 

5、  在调用比较成熟的API时,如果失败,则以ERROR记录,并且有错误号记下错误号。 

6、  在调用没有经过严格测试的库时,即使返回成功,也要以DEBUG的形式记录下返回的结果。 

7、  以捕获异常时,以ERROR记录下错误。 

8、  在进行数据库操作时,以DEBUG的级别输出执行的SQL词句,对于取回的结果,最好是能打印出所有构造完成的对象的信息。 

9、  在与其它程序进行通信时,以DEBUG记录下通信过程中的重要信息。 

10、 对程序中的每个线程,它们的初始化完成和开始运行也要以INFO记录下来。 

11、 对程序中需要检查运行性能的地方,以DEBUG记录下运行耗时。 

12、 程序正常结束时,和初始化的记录方式相同,对各个模块的卸载采用和加载是一样的处理方式。当程序都卸载完成后以INFO记录程序退出的消息。 

1.当程序产生异常时,必须捕捉并处理异常、将异常记录到日志中(除非打算抛出异常)。

 2.不要处理能够避免的异常。

 3.在异常处理模块中提供适量的错误原因信息。

 4.不要从try区段中返回。

  5.将try/catch区段置于循环之外。

  6.不要将异常用于程序流程控制。

  7.记录异常不要保存exception.getMessage(),而要记录exception.toString().

  8.一个方法不应抛出太多类型的异常。说明:如果程序中需要分类处理,则将异常根据分类组织成继承关系。如果确实有很多异常类型首先考虑用异常描述来区别,throws/exception子句标明的异常最好不要超过三个。

 9.异常捕获尽量不要直接catch(Exceptionex),应该把异常细分处理。

10. 尽量减小try块的体积。

11. 尽量抛出异常,顶层的main()函数截获所有的异常,并且打印(或者记录在日志中)在屏幕上。

原文地址:https://www.cnblogs.com/tisakong/p/5102980.html