java log 最佳实践,Java打印日志最佳实践

一、只记录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

2

3

4

5

6

7log4j.rootLogger=INFO, file

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=logging.log

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss} %c %t - %m%n

现有如下类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15package com.dslztx;

import org.apache.log4j.Logger;

public class Main {

private static final Logger LOG = Logger.getLogger(Main.class);

public static void main(String[] args) {

new Thread(new Runnable() {

public void run() {

LOG.info("Run Thread");

}

}, "ThreadName").start();

}

}

运行以上类main方法之后,日志文件内容如下:

1INFO 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值