转载 来自:http://blog.csdn.net/dl88250/archive/2007/10/25/1843813.aspx
Java Logging API是sun公司于2002年5月正式发布的。它是自J2SE 1.4版本开始提供的一个新的应用程序接口。它能够很方便地控制和输出日志信息到文件,控制台或其它用户定义的地方,如数据库,电子邮件等。所以它是为最 终用户,系统管理员,软件服务工程师和开发人员提供的一种捕捉安全漏洞,检查配置正确性,跟踪调查系统运行瓶颈和调查系统运行错误的工具。
Java Logging API的设计目标是要:
1. 能够在运行时启动或关闭日志功能;
2. 能够非常精密地控制日志,即能够启动或关闭日志的某个个别功能;
3. 能够在运行时注册日志服务,当然也可以注册新的第三方日志服务;
4. 能够提供连接服务,使Java Logging API能与现存的日志系统(如操作系统的日志功能)连接;
5. 能够支持显示高优先度的信息给最终用户。
输出日志
由于Java Logging API提供了非常方便的接口,你可以在下面的例子里看到它的使用有多方便。
例1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package jdk14logger;
import java.util.logging.Logger; // <= (1)
public class HelloLogWorld
{
private static String name = HelloLogWorld.class.getName();
private static Logger log = Logger.getLogger(name);// <= (2)
public void sub()
{
log.info("Hello Logging World");// <= (3)
}
public static void main(String[] args)
{
HelloLogWorld logWorld = new HelloLogWorld();
logWorld.sub();
}
}
|
说明:
1. Logger是Java Logging API中的一个类。在此之前,你必须确认你所使用的J2SE是1.4或更高版本。
2. Logger.getLogger方法创建了一个Logger实例。每一个Logger实例都必须有个名称,通常的做法是使用类名称定义Logger实例。后面还会讲到这样做的原因。
3. log.info方法用来输出日志信息。
执行例1你可以看到控制台上输出了日期时间,类名,方法名和Hello Logging World的信息。
输出的种类
Java Logging API提供了七个级别用来控制输出。这七个级别分别是:
SEVERE (最高级别)
WARNING
INFO
CONFIG
FINE
FINER
FINEST (最低级别)
与之对应,在Logger类中也为你预备好了这七个级别的输出方法。下面是使用这几种方法输出日志信息的例子。
例2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package jdk14logger;
import java.util.logging.Logger;
public class LevelTest
{
private static String name = HelloLogWorld.class.getName();
private static Logger log = Logger.getLogger(name);
public void sub()
{
log.severe("severe level");// <= (1)
log.warning("warning level");// <= (2)
log.info("info level");// <= (3)
log.config("config level");// <= (4)
log.fine("fine level");// <= (5)
log.finer("finer level");// <= (6)
log.finest("finest level");// <= (7)
}
public static void main(String[] args)
{
LevelTest test = new LevelTest();
test.sub();
}
}
|
执行例2你可能看到控制台上只输出了(1)-(3)的信息,(4)-(7)的信息并没有如想象的那样被输出。这不要紧,继续看下面的内容你就知道原因了。
控制输出
上面例2中info以下的级别信息没有被输出是因为缺省日志输出级别的设置是info,也就是说只有info或它以上的级别被输出,它以下的级别不被输 出。通过变更设置可以使输出级别改变。变更输出级别的方法有两种,一是使用外部配置文件,二是使用程序编码。通常都是使用第一种方法。缺省的外部配置文件 是JRE中lib/logging.properties文件。你可以打开这个文件,修改以下两行为:
.level= ALL
java.util.logging.ConsoleHandler.level = ALL
修改完后,再运行一次例2,这次(1)-(7)的内容就都输出出来了。你可以修改输出级别为以下任何值,试一试输出有什么变化。
OFF
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST
ALL
自定义的配置文件
如果你不想使用系统提供的缺省配置文件lib/logging.properties,那么也可以使用自己定义的配置文件。使用自定义配置文件的方法有很 多种,比较方便的方法是通过定义系统属性值java.util.logging.config.file来设置自定义配置文件。例如在执行例2时,使用下 面的命令:
java -Djava.util.logging.config.file=mylogging.properties LevelTest
其中mylogging.properties是你自定义的配置文件。如果需要,你还可以加上文件的路径名。
更多的输出控制
除了前面讲到的七个输出级别外,Logger类中还提供了以下三个便于程序员调试时使用的输出信息方法:
entering
exiting
throwing
它们是与FINER相同级别的输出,分别用于程序入口,出口和例外时的输出。除此之外Logger类中还准备了一些输出信息的方法,这些留待以后详细介绍。
输出内容的本地化
Java Logging API已经考虑到了国际化对应问题。在输出信息上你可以使用ResourceBundle提供本地化的输出信息。下面举个例子说明。
例3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package jdk14logger;
import java.util.logging.Logger;
public class LocalTest {
private static String name = HelloLogWorld.class.getName();
private static Logger log = Logger.getLogger (name, "jdk14logger/LocalTest");<= (1)
public void sub() {
log.severe("level.severe");<= (2)
log.warning("level.warning");<= (3)
log.info("level.info");<= (4)
log.config("level.config");<= (5)
log.fine("level.fine");<= (6)
log.finer("level.finer");<= (7)
log.finest("level.finest");<= (8)
}
public static void main(String[] args) {
LocalTest test = new LocalTest();
test.sub();
}
}
|
你可以比较一下例2和例3。可以看到例3的Logger.getLogger 方法调用中增加了一个传参,并且(2)-(8)中的输出内容也改变了。(1)中增加的字符串传参就是使用ResourceBundle配置时的属性文件 名。下面就需要建立这个属性文件jdk14logger/LocalTest.properties,内容如下:
level.severe=severe level
level.warning=warning level
level.info=info level
level.config=config level
level.fine=fine level
level.finer=finer level
level.finest=finest level
现在运行例3可以看到输出结果并不是(2)-(8)中定义的内容。或许你已经想到了,(2)-(8)中定义的实际上是local.properties文 件中的属性键名,而输出是这些属性键名所对应的键值。那么或许你要问如果属性键名在属性文件中不存在怎么办,答案很简单,如果它不是属性键名就一定是要输 出的内容,所以就照原样输出了事。
分享到:
相关推荐
入门... ...与Logback ... ...和 logback 经典的 SocketAppender。 Lilith 正在侦听端口 4445 或端口 4560 上的 logback-classic 连接。 与RemoteHost属性中定义的一个主机建立连接。 将以下内容添加到您的...
Apache Commons Logging和Log4j是两个广泛使用的日志框架,本指南将深入讲解如何将它们结合使用,为你的Java应用程序提供强大的日志功能。 首先,让我们了解Apache Commons Logging。它是Apache软件基金会的一个...
这里导入了用于处理翻译逻辑的`com.google.api.translate`包以及用于GUI操作的`java.awt.event`和日志记录的`java.util.logging`。 ##### 2. TranslatorFrame类定义 ```java public class TranslatorFrame extends ...
Java日志经历了从JUL(Java Util Logging)到Apache Commons Logging(JCL),再到Log4j、SLF4J(Simple Logging Facade for Java)和Logback的发展。SLF4J提供了一种抽象层,允许开发者在不同日志实现之间切换,而...
### LOG4J快速入门 #### 一、简介与安装配置 Log4j 是一个非常流行的 Java 日志框架,由 Apache 软件基金会提供。它能够帮助开发者在应用程序中记录日志信息,这对于调试程序、追踪错误以及进行系统监控等方面具有...
4. `commons-logging-1.1.jar` - 是一个通用的日志接口,允许应用程序在不关心具体日志实现的情况下进行日志记录。 另外,`json-lib-2.3-jdk15.jar`是JSON-LIB的核心库,它实现了JSON与Java对象之间的转换。`...
Log4j 相比于传统的 System.out.println 方法具有更多的优势,比如可以动态调整日志级别、支持多种输出目的地(如文件、控制台等)、以及强大的日志格式化功能。 #### 二、Log4j 快速入门 ##### 1. 安装与集成 - ...
本文将引导您快速入门 Quartz 框架,了解其基本使用方法。 首先,要开始使用 Quartz,您需要从官方网站下载对应的 JAR 包,通常为 quartz-<version>.jar。除此之外,根据您的需求,Quartz 可能还需要一些第三方库,...
- 日志框架:如Log4j或java.util.logging,用于记录程序运行日志,便于调试和问题排查。 3. Apache相关: - Tomcat:这是一个流行的开源Java应用服务器,用于部署和运行Java Web应用。 - Maven:项目管理和构建...
本篇文章将带你快速入门Quartz框架,了解如何在Spring中集成Quartz以及创建和执行Job。 首先,要使用Quartz框架,你需要在项目中引入必要的库文件。主要依赖的JAR是quartz-<version>.jar,此外,由于Quartz可能需要...
为了帮助读者快速理解如何使用 Mina 2.0 开发简单的网络服务,下面提供了一个基于时间服务器的例子——`MinaTimeServer.java`。 ```java package com.vista; import java.io.IOException; import java.net....
这篇博客“【MyBatis入门】—— MyBatis日志”旨在帮助初学者理解如何在MyBatis中配置和使用日志功能,以便于调试和优化应用程序。 在MyBatis中,日志系统对于跟踪SQL语句和参数,以及检查执行效率至关重要。...
- 打开`tomcat/conf/logging.properties`文件,将`java.util.logging.ConsoleHandler.encoding=utf-8`修改为`java.util.logging.ConsoleHandler.encoding=GBK`或注释掉该行。 2. **修复tomcat在IDEA Debug模式启动...
6. **Apache Commons Logging**: `commons-logging-1.2.jar`是一个日志抽象层,允许开发者选择底层的日志实现,如Log4j、Java Util Logging等。通过使用Commons Logging,Spring框架可以保持与特定日志实现的解耦,...
9. **日志记录**:使用如Log4j或java.util.logging框架进行日志记录,方便调试和问题排查。 10. **单元测试**:通过JUnit等工具进行单元测试,确保每个功能模块的正确性。 通过这个项目,开发者不仅能加深对Java...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个抽象层,它提供了一个API,允许开发者选择自己偏好的日志实现,如Log4j、Java Util Logging、Logback等。SLF4J的主要目标是为各种日志框架提供一个简单...
本教程将带你快速入门JSON-LIB的使用,了解如何在Java项目中进行JSON的序列化与反序列化操作。 首先,我们来看一下所需的依赖库。在提供的文件列表中,可以看到一些Apache Commons库,例如`commons-lang-2.4.jar`、...
Spring文档还涉及到多个重要知识点,如使用Log4j1.2或2.x进行日志记录,避免使用Commons Logging,采用SLF4J与Log4j或Logback结合使用,以及如何使用JUL(java.util.logging)进行日志处理。 最后,还提到了在...
- **现有框架**:常见的Java日志框架包括JUL (Java Util Logging)、logback、log4j、log4j2以及作为日志门面的JCL (Jakarta Commons Logging) 和slf4j (Simple Logging Facade for Java)。日志门面允许开发者选择...
它通过简单的接口,使得更换日志实现变得更加容易,比如你可以选择log4j、java.util.logging或者其他日志系统。 对于AOP部分,Spring的AOP模块提供了一种声明式的方式来编写横切关注点,比如事务管理、安全检查等。...