Apache Commons-logging使用实例

来源:互联网 发布:微信抢号软件 编辑:程序博客网 时间:2024/05/22 22:15
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
http://zhangjunhd.blog.51cto.com/113473/25135
 
本文将介绍如何在程序中使用Apache Commons-logging
author: ZJ 07-3-17
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]
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。
1)  加入配置文件commons-logging.properties和log4j.properties。
 
2)  将 log4j.jar 和 common-logging.jar 两个包加入到环境变量或者classpath 。
 
3)Test.java内容不变。
 
3)  commons-logging.properties
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
6.Apache Log介绍集
[1] Apache Log4j配置说明
[2] Apache Log4j使用实例
[3] Apache Commons-logging使用实例
[4] 如何自建appender扩展Log4j框架
7.参考资料
[1]官方文档
[2] Jakarta Commons Logging(JCL)开发手记
[url]http://blog.csdn.net/fasttalk/archive/[/url]2005/06/29/406681.aspx

本文出自 “子 孑” 博客,请务必保留此出处http://zhangjunhd.blog.51cto.com/113473/25135

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子脸上有红血丝怎么办 脸上长了红血丝怎么办 指甲受创出血了怎么办 手指被挤压紫了怎么办 眼睛撞了有淤血怎么办 下眼底有小白点怎么办 狗的白眼球充血怎么办 眼球有出血点是怎么办 吃阿胶上火了该怎么办 胎儿胼胝体发育不良怎么办 鸡眼看到硬芯了怎么办 小脚趾起茧子疼怎么办 脚起老茧很痛怎么办 化疗后骨髓抑制严重怎么办 胃炎引起的胃胀怎么办 胃病胀肚子很鼓怎么办 小孩淋巴结发炎肚子疼痛怎么办 顺产后子宫脱垂怎么办 顺产完子宫脱垂怎么办 额头长了个鱼鳞怎么办 脸上长了很多痣怎么办 做过狐臭的疤痕怎么办 痤疮留下的红印怎么办 脸上疤掉了黑印怎么办 脸上有黑色的疤怎么办 一只眼睛外斜视怎么办 残币银行不给换怎么办 手上有多套房的怎么办 长了两层脚指甲怎么办 指甲长了两层怎么办 脚趾甲长了两层怎么办 产妇气血虚没奶怎么办 哺乳期气血不足奶水少怎么办 刚怀孕喝了啤酒怎么办 受风怎么办最快最有效 孕妇后背受风了怎么办 肩膀和后背受风怎么办 手指关节杵肿了怎么办 骨关节退行性变怎么办 疼风脚趾肿了怎么办 痛风脚右侧肿了怎么办