如果你对log4j数据包还不熟悉,你可以先查阅上一篇文章,在我写这篇文章之时,log4j的最新版本是1.2.4,其中包括两项改动,可使其与JDK logging API的兼容性更强,这些改动涉及了类别类转移到记录器类和优先类转移到级别类。类别类和优先类仍然会得到支持,因此你从旧版本升级时现有的log4j代码仍然可用。现在,让我们来关注在应用软件中加入logging的问题。
代码与logging API作连接时使用的主要对象就是记录器类,记录器类包含恢复记录器的实例和记录不同级别的信息所必需的方法。你可以使用与下面类似的代码来得到一个记录器的实例:
private static final Logger logger = Logger.getLogger(JavaLoggingExample.class.getName());
这段代码使用当前类名来恢复记录器的实例,代码中,类名为JavaLoggingExample,getLogger()方法允许一个String argument来指定记录器类名,logging API使用一个等级式的名称空间以使设置可以被较低的级别所继承。例如,如果类的全名为com.versatilesolutions.builder.JavaLoggingExample,则记录器的设置可以从com.versatilesolutions来继承,因为它是类中的父级。所有记录器都从LogManager做继承,因此新创建的记录器将拥有在LogManager中所声明的设置。
记录是建立在由整数所代表的级别之上的,在java.util.logging数据包中的级别类包含预置级别的区域。级别包括SEVERE, WARNING, INFO, CONFIG, FINE, FINER, and FINEST。在一个级别中记录一条信息,你可以根据所需要的级别和信息调用记录方法:
logger.log(Level.SEVERE, “This is a severe level message!”);
这里记录了一个SEVERE级别信息。有几种记录方法可以通过直接记录到一个特定级别上从而节省时间:
logger.severe(“This is another severe level message!”);
当你运行这些记录方法时,输出是这样:
Jun 25, 2002 4:40:34 PM JavaLoggingExample <init>
SEVERE: This is a severe level message!
第一行在日期和时间之后是类的名称和logging API对于实现调用程序的最佳推测。这里<init>代表类的建造者,logging API不能保证追踪信息的准确性,这是由于准确性会被许多种优化运行环境所影响。