一、只记录DEBUG,INFO和ERROR级别日志
只记录DEBUG,INFO和ERROR级别的日志信息,DEBUG级别日志记录“调试信息”,INFO级别日志记录“一般信息”,ERROR级别日志记录“异常信息”,这3个级别的日志记录已经能够充分包含关键有价值的信息;如果再记录其他级别的日志信息,一方面,这些日志信息的价值度不是很高(DEBUG,INFO和ERROR这3个级别的日志信息已经能够充分包含关键有价值的信息),另外一方面,过多的日志信息会降低可读性。
需要特别强调的是,DEBUG级别的日志记录非常重要,它与INFO级别的日志记录和ERROR级别的日志记录一起,能够充分包含关键有价值的信息,三者缺一不可。
举例子说明DEBUG级别日志记录的重要性,我们常常使用第三方库(比如Spring,Mybatis等),在使用这些第三方库的过程中,如果遇到问题,我们往往可以通过设置“将DEBUG级别的日志记录显式打印出来”,从而获得排查问题的线索。因此,如果某些第三方库没有记录DEBUG级别的日志信息,那么它们的易用性就会受到很大的损害。
二、只在调试模式下显式打印DEBUG级别日志信息
“一、只记录DEBUG,INFO和ERROR级别日志”中介绍到需要记录DEBUG,INFO和ERROR级别的日志信息,但是,需要注意的是,在一般模式下,只显式打印INFO和ERROR级别的日志信息,而不显式打印DEBUG级别的日志信息。这是因为在一般模式下,DEBUG级别的日志信息并没有很大价值,如果显式打印会降低可读性,只有在调试模式时,才需要将DEBUG,INFO和ERROR这3个级别的日志信息一起同时显式打印。
三、日志记录内容:日志级别,时间,地点,人物,事件
3.1、概念
日志级别:根据“一、只记录DEBUG,INFO和ERROR级别日志”,日志级别可取值有“DEBUG,INFO和ERROR”
时间:日志记录行为发生时间
地点:日志记录行为发生时所处类,根据具体情况可取“全限定类类名”或者“简单类类名”
人物:进行日志记录行为的当前线程的线程名称
事件:使用日志进行记录的事件内容
3.2、举例说明
选择使用Log4J日志框架,使用的Log4J日志框架配置文件内容如下:
1 | log4j.rootLogger=INFO, file |
现有如下类:
1 | package com.dslztx; |
运行以上类main方法之后,日志文件内容如下:
1 | INFO 2016-08-13 19:18:24 com.dslztx.Main ThreadName - Run Thread |
四、日志对人必须具有可读性
日志对人必须具有可读性,这个“人”一般是指具有使用Linux下基本的文本处理命令(比如grep,sed,cut,tail等命令)能力的人。
参考文献: [1]https://blog.log4d.com/2015/10/how-to-log/ [2]http://dev.splunk.com/view/logging-best-practices/SP-CAAADP6