1
.
Commons-Loggin
简介
Jakarta
Commons Logging (JCL)
提供的是一个日志
(Log)
接口
(interface)
,同时兼顾轻量级和不
依赖于具体的日志实现工具。它提供给中间件
/
日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已
熟悉某种日志实现工具的更高级别的细节。
JCL
提供的接口,对其它一些日志工具,包括
Log4J,
Avalon LogKit, and JDK 1.4
等,进行了简单
的包装,此接口更接近于
Log4J
和
LogKit
的实现。
2
.快速入门
JCL
有两个基本的抽象类:
Log(
基本记录器
)
和
LogFactory(
负责创建
Log
实例
)
。当
commons-logging.jar
被加入到
CLASSPATH
之后,它会合理地猜测你想用的日志工具,然后进行自我设置,用户根本不需要做任何设置。默认的
LogFactory
是按照下列的步骤去发
现并决定那个日志工具将被使用的(按照顺序,寻找过程会在找到第一个工具时中止)
:
1.
寻找当前
factory
中名叫
org.apache.commons.logging.Log
配置属性的值
2.
寻找系统中属性中名叫
org.apache.commons.logging.Log
的值
3.
如果应用程序的
classpath
中有
log4j,
则使用相关的包装
(wrapper)
类
(Log4JLogger)
4.
如果应用程序运行在
jdk1.4
的系统中,使用相关的包装类
(Jdk14Logger)
5.
使用简易日志包装类
(SimpleLog)
org.apache.commons.logging.Log
的具体实现有如下:
-org.apache.commons.logging.impl.Jdk14Logger
使用
JDK1.4
。
-org.apache.commons.logging.impl.Log4JLogger
使用
Log4J
。
-org.apache.commons.logging.impl.LogKitLogger
使用
avalon-Logkit
。
-org.apache.commons.logging.impl.SimpleLog
common-logging
自带日志实现类。它实现了
Log
接口,把日志消息都输出到系统错误流
System.err
中。
-org.apache.commons.logging.impl.NoOpLog
common-logging
自带日志实现类。它实现了
Log
接口。
其输出日
志的方法中不进行任何操作。
3
.使用JCL开发
因为
Log4j
的强大,同时开发者又不希望对
Log4j
的依赖性太强。所以目前比较流行的是
Commons-logging
和
Log4j
结合使用。
1.
部署日志器
下载
commons-logging.jar
和
log4j.jar
包,能后把它们放到工程的
lib
目录下,引入工程中。
2.
指定日志器
在属性文件
common-logging.properties
中设置实现接口的类。如下
(
这里设置
Log4j
为所使用的日志包
)
:
#commons-logging.properties
文件配置信
息
#
org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
# Must be one
of ("trace", "debug", "info", "warn",
"error", or "fatal").
#
利用
log4j
为输出介质
org.apache.commons.logging.Log=
org.apache.commons.logging.impl.Log4JCategoryLog
#JDK5 Logger
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
|
3
.
org.apache.commons.logging.Log
接口中定义的方法
,
按严重性由高到低的顺序有:
log.fatal(Object message);
log.fatal(Object message,
Throwable t);
log.error(Object message);
log.error(Object message,
Throwable t);
log.warn(Object message);
log.warn(Object message,
Throwable t);
log.info(Object message);
log.info(Object message,
Throwable t);
log.debug(Object message);
log.debug(Object message,
Throwable t);
log.trace(Object message);
log.trace(Object message,
Throwable t);
|
除此以外,还提供下列方法以便代码保护。
log.isFatalEnabled();
log.isErrorEnabled();
log.isWarnEnabled();
log.isInfoEnabled();
log.isDebugEnabled();
log.isTraceEnabled();
|
4
.信息级别
确保日志信息在内容上和反应问题的严重程度上的恰当,是非常重要的。
1
)
fatal
非常严重的错误,导致系统中止。期望这类信息能立即显示在状态控制台上。
2
)
error
其它运行期错误或不是预期的条件。期望这类信息能立即显示在状态控制台上。
3
)
warn
使用了不赞成使用的
API
、非常拙劣使用
API, '
几乎就是
'
错误
,
其它运行时不合需要和不合预期的状态但还没必要称为
"
错误
"
。期望这类信息能立即显示在状态控制台上。
4
)
info
运行时产生的有意义的事件。期望这类信息能立即显示在状态控制台上。
5
)
debug
系统流程中的细节信息。期望这类信息仅被写入
log
文件中。
6
)
trace
更加细节的信息。期望这类信息仅被写入
log
文件中。
通常情况下,记录器的级别不应低于
info.
也就是说,通常情况下
debug
的信息不应被写入
log
文件中。
4
.
Apache Commons-logging
使用流程
1
)将
common-logging.jar
包加入到环境变量或者
classpath
。
2
)导入
org.apache.commons.logging.Log;
org.apache.commons.logging.LogFactory;
及相关包
3
)在需要使用
logging
的地方获取
Log
实例。
private
static
Log
log
= LogFactory.getLog
(Test.
class
);
|
4
)使用
Logger
对象的
debug,info,fatal...
方法。
log
.debug(
"Debug
info."
);
|
5.Apache Commons-logging
使用示例
Test.java
package
sample;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
public
class
Test {
private
static
Log
log
= LogFactory.getLog
(Test.
class
);
public
void
log(){
log
.debug(
"Debug info."
);
log
.info(
"Info info"
);
log
.warn(
"Warn info"
);
log
.error(
"Error info"
);
log
.fatal(
"Fatal info"
);
}
public
static
void
main(String[]
args) {
Test test =
new
Test();
test.log();
}
}
|
结果:
DEBUG
sample.Test.log(
Test.java:13
)
Debug info.
INFO
sample.Test.log(
Test.java:14
)
Info info
WARN
sample.Test.log(
Test.java:15
)
Warn info
ERROR
sample.Test.log(
Test.java:16
)
Error info
FATAL
sample.Test.log(
Test.java:17
) Fatal info
当没有任何配置文件(
.properties
)时,就如同上的结果。此时,它使用的是使用简易日志包装类
(SimpleLog)
。
下面加入包与配置文件,使其使用
log4j
。
<!-- [if !supportLists]-->1)
加入配置文件
commons-logging.properties
和
log4j.properties
。
<!-- [endif]-->
<!-- [if !supportLists]-->2)
将
log4j.jar
和
common-logging.jar
两
个包加入到环境变量或者
classpath
。
<!-- [endif]-->
3
)
Test.java
内容不变。
<!-- [if !supportLists]-->3)
commons-logging.properties
<!-- [endif]-->
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
|
4
)
log4j.properties
log4j.rootLogger=info,
stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the
caller's file
name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p
[%t] - %m%n
|
结果:
INFO [main] -
Info info
WARN [main] -
Warn info
ERROR [main] -
Error info
FATAL [main] -
Fatal info
|
分享到:
相关推荐
Apache Commons Logging 提供了一个API,开发人员可以使用这个API编写日志语句,然后在运行时通过配置来决定实际的日志实现,如Log4j、java.util.logging(也称为JUL)或简单的控制台日志。 标题中的"apache-...
在标题"commons-logging-1.2_commonslogging_"中提到的"commons-logging-1.2.jar"就是这个库的1.2版本,它是Spring框架中常用的一个依赖,用于处理日志记录。 Spring框架广泛使用Commons Logging作为其默认的日志...
使用Commons Logging时,开发者不需要直接实例化特定日志系统的类,而是通过Commons Logging提供的接口(如`org.apache.commons.logging.Log`和`org.apache.commons.logging.LogFactory`)来创建和使用日志对象。...
在项目中使用"commons-logging-1.2.jar",开发者可以方便地整合各种日志框架,提高开发效率,并且可以根据项目的具体需求调整日志输出的方式和级别,以满足调试、性能监控或生产环境的不同需求。
在实际使用中,Commons Logging提供了一系列的Logger接口,如`org.apache.commons.logging.Log`和`org.apache.commons.logging.LogFactory`。通过`LogFactory.getLog(Class)`方法,可以获取与当前类关联的Logger实例...
**commons-logging.jar** 是Apache Commons项目的一部分,它提供了一个抽象层,允许应用程序使用多种不同的日志框架,如log4j、Java内置的日志API(java.util.logging)、或者其他的日志实现。这个库的核心理念是...
Apache Commons Logging是Java的一个日志抽象层,它允许开发者选择他们喜欢的日志实现,如Log4j或Java内置的日志API。通过这个库,程序员可以在不修改代码的情况下更换日志实现,增强了项目的可移植性和可维护性。 ...
Apache Commons Logging 是一个Java日志框架的抽象层,它允许应用程序使用多种不同的日志实现,如Log4j、Java Util Logging或JDK14 Logging。标题提到的"commons-logging-1.2-bin2014最新版"是Apache Commons ...
另一方面,"commons-logging-1.1.1.jar"是Apache Commons Logging项目的一部分,这是一个轻量级的日志框架。它的主要目的是提供一个抽象层,使得开发人员可以在不修改代码的情况下,选择和切换不同的日志实现(如log...
- **简单易用**:Commons Logging的API设计简洁,使用方便,只需通过`LogFactory.getLog()`方法获取一个`Log`实例,然后就可以调用各种级别的日志方法。 - **线程安全**:Commons Logging保证了日志对象的线程安全...
在编写代码时,我们通常会在每个需要记录日志的类中引入`commons-logging`的`Log`接口,通过`LogFactory.getLog()`获取一个`Log`实例,传入当前类的`Class`对象。这样做的好处是,无论日志实现如何改变,只要保持...
2. **LogFactory**: `org.apache.commons.logging.LogFactory`是用于获取`Log`实例的工厂类。它负责根据环境变量、系统属性或者类路径中的配置文件选择合适的日志实现。 3. **适配器模式**: Commons Logging通过...
在实际开发中,Apache Commons Logging常与其他日志框架一起使用,例如Logback(作为Log4j的替代品)或SLF4J(Simple Logging Facade for Java),后者提供了一种更现代且灵活的日志记录接口,可以透明地桥接到各种...
为了自定义日志行为,开发者可以使用`org.apache.commons.logging.LogConfigurationException`来处理配置错误,以及`org.apache.commons.logging.impl`包下的各种预定义日志实现,如`SimpleLog`和`NoOpLog`。...
2. `org.apache.commons.logging.LogFactory`:这是一个工厂类,负责根据环境配置创建并返回`Log`实例。它通过查找系统属性或类路径中的配置文件来确定实际的日志实现。 3. `org.apache.commons.logging.impl....
3. API调用:在代码中,通过`org.apache.commons.logging.LogFactory`获取日志实例,然后使用`log.debug()`, `log.info()`等方法记录日志。 四、`ant.license.txt`文件 `ant.license.txt`文件通常包含了Apache Ant...
Apache Commons Logging,简称Commons Logging,是Java开发中广泛使用的日志接口库。这个开源项目由Apache软件基金会维护,旨在提供一个简单、灵活的日志记录接口,使得开发者可以在不修改代码的情况下,切换不同的...