System.out.println("...")。当你没有调试工具而要跟踪一个变量的值的时候;当你需要显示捕获的Exception、Error的时候;当你想知道程序在运行的时候究竟发生了什么事的时候,通常的做法就是调用System.out.println()把它们在终端、控制台上打印出来。这种方式对于输出信息的分类、格式化及永久保存带来诸多不便。虽然我们可以把它写入一个文件然后进行分析,但是这需要额外的代码,其成本不可忽视!而由此给目标系统本身增加的复杂程度不可避免的使开发、调试陷入一个深深的泥潭。
注意:能不写的代码最好不要写!
JDK1.4的推出,使得这一切成为了历史。向System.out.println()告别吧,使用Java Logging API为自己的程序构建一个完整的日志记录系统!
一、第一个实例
先看一个简单的实例:
注意:编译、执行改程序需要JDK1.4及以上版本的支持,此实例使用JDK1.6
在适当时候获得一个Logger(日志记录器)类的实例logger,然后调用Logger类的log方法进行记录。
二、Logger
1、命名空间
在上边的实例中,我使用了一个匿名的(没有命名的)Logger对象。在Java Logging框架中,Logger是可以命名的。Logger的名字空间与Java类的名字空间的结构相同:使用"."间隔的字符串。Logger的名字空间体现了Logger的层次结构。例如:命名为"a.b"的Logger是命名为"a.b.c"的父级Logger记录器。Logger的命名可以是任意的字符串,一般情况下,使用包或类的名字为Logger进行命名。
Logger的名字空间由LogManager的实例进行创建、维护。
【在处理数据库的时候由DriverManager来管理数据库驱动】
匿名Logger不被存储在命名空间中。
2、日志级别
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。
1、static Level DEBUG
细粒度信息事件,对调试应用程序非常有帮助
2、static Level INFO
粗粒度信息事件,突出强调程序的运行过程
3、static Level WARN
会出现潜在错误的情形
4、static Level ERROR
虽然发生错误事件,但仍然不影响系统的继续运行
5、static Level FATAL
严重的错误事件将导致应用程序退出
另外,还有两个可用的特别的日志记录级别
1、static Level ALL
最低等级,用于打开所有日志记录
2、static Level OFF
最高等级,用于关闭所有日志记录
日志记录器(Logger)的行为是分等级的,分为DEBUG、INFO、WARN、ERROR、FATAL、ALL、OFF或者自己定义的级别。log4j建议只使用其中四个级别:DEBUG、INFO、WARN、ERROR。