Java中的Log

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

在软件中,Log是必不可少的,Log既可以用来调试程序,又可以查看程序的执行顺序及执行时间,还可以在出现问题时用来查看问题的出现点。在Java中有许多Log库,有Java自带的,也有开源的,常用的Log有Log4j,Slf4j等。不管日志库有多少,但一般都提供五个级别(优先级从低到高)的Log:

1. Debug

通常情况下,Debug的级别最低(当然还有比它低的——Trace,All),一般来说,在应用实际上线运行时,都是不输出Debug Log的,因此可以在调试程序时使用,写程序时应该养成输出Log的良好习惯,这样可以在程序出现问题时及时的定位到错误的位置,同时别人阅读你的代码时,也很容易明白程序的运行流程,只要看一下Log就能明白。

SLF4J官方文档的定义:DEBUG Level指定细粒度信息事件,对于调试应用程序是最有用的。

2. Info

Info是用来反映系统的当前运行状态信息的,因此这里输出的信息必须是有意义的,常用来输出业务处理过程中的一些关键信息或业务执行的信息,也常用来输出对系统影响较大的一些信息,例如系统升级等。系统声明周期事件(启动、停止)、Session的生命周期事件(登录、退出等)、典型的业务逻辑异常(登录时登录失败)都从Info来输出。Info级别是应用实际上线运行时采用的Log级别。

SLF4J官方文档的定义:INFO Level指定粗粒度的强调应用运行过程信息的消息。

3. Warn

Warn代表一个未预料到的技术或业务事件发生了,用户可能会受到影响,但可能不需要立即进行处理,调用时不会立即受到影响,但技术支持人员需要尽快检查这些问题。基本上Warn问题需要进行检查,但可能不需要立即处理。

SLF4J官方文档的定义:WARN Level指定潜在的有害情况。

4. Error

Error代表发生了必须马上处理的错误,客户可能正受到错误影响,错误出现以后可以允许程序继续运行。

SLF4J官方文档的定义:ERROR Level指定错误事件,但系统仍能继续运行。

5. Fatal

Fatal表示发生了最严重的错误,整个服务可能已经停止,『两点理论』可以应用在这个地方,如果半夜两点发生了这个错误,你必须立马起来并修复的错误,就可以使用Fatal级别。

SLF4J官方文档的定义:FATAL Level指定非常严重的错误事件,并假定程序运行已经终止。

6. 其它的Log级别

OFF:OFF表示最高级别的Log,表示Log都要关闭。

TRACE:比Debug级别还低的Log,表示比Debug粒度还细的信息。

ALL:最低级别的Log,表示打开Log。

参考资料:

  1. http://www.slf4j.org/apidocs/org/apache/log4j/Level.html

  2. http://stackoverflow.com/questions/7839565/logging-levels-logback-rule-of-thumb-to-assign-log-levels

  3. http://www.cnblogs.com/shwen99/archive/2007/12/29/1019853.html

  4. http://www.bkjia.com/Javabc/1021481.html

如果有收获,可以请我喝杯咖啡!