zoukankan      html  css  js  c++  java
  • commonslogging日志系统

    commons-logging日志系统

    commons-logging日志系统

    Table of Contents

    1 日志系统介绍

    • 日志的重要性是随着系统的膨胀而显现的,在一个庞大的系统中查错没有各种日志信息 是寸步难行的。所以在系统加入日志是必须的。
    • 最原始的日志方式,就是在程序的适当地方添加System.out.println()方法,但是带来 的问题是,系统稳定后,日志太大,如果要减少日志量,就需要重新修改程序,虽然只 是注释掉System.out.println()方法。但是万一系统再次出错,又要改。
    • commons-logging提供分级日志功能,相当于把System.out.println()方法加强了,原来 是一定输出到控制台,现在commons-logging有6级日志,但是apache建议使用4级,即 ERROR、WARN、INFO、DEBUG。什么情况下输出日志由程序中写日志的方法决定,输出什 么级别以上的日志和输出到哪里由配置文件决定。
    • 使用commons-logging如下:
    //导入类
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    public class TestLog
    {
        //获取以当前类为参数的日志对象
        private static Log log = LogFactory.getLog(TestLog.class);
        public static void main(String[] args){
            //输出4种不同级别的日志
            log.debug("111");
            log.info("222");
            log.warn("333");
            log.error("444");
        }
    }
    
    • 当然还要配置commons-logging.properties文件,其中定义输出哪个级别以上的日志。
    • 好像这就完了,和log4j没啥关系。那么为什么一般系统都会使用commons-logging和 log4j两个包来记录日志呢?
    • 原因就是commons-logging的输出功能比较弱,也就是输出格式和输出设备选择有限,只 有原生输出类org.apache.commons.logging.impl.SimpleLog。但是它提供了一个通用的 日志接口org.apache.commons.logging.log,让其他的包来实现复杂的输出。其中就有 Jdk14Logger, Log4JLogger,前面是jdk1.4之后加入的,后面就是log4j中的类。
    • log4j也可以直接像commons-logging一样在程序中定义输出信息,然后再配置文件中定 义输出级别,但是这样做就会使程序唯一的和log4j绑定(如果你一定要单独使用 log4j,那么也是可以的),而且commons-logging更加智能,帮我们自动选择"适当的" 日志实现系统:
    1) 首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则
       使用其中定义的Log实现类;
    
    2) 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量
       org.apache.commons.logging.Log,找到则使用其定义的Log实现类;
    
    3) 否则,查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类;
    
    4) 否则,使用JDK自身的日志实现类(JDK1.4以后才有日志实现类);
    
    5) 否则,使用commons-logging自己提供的一个简单的日志实现类SimpleLog;
    
    • 所以,在前面程序的基础上,只要导入log4j的包,则commons-logging会自动使用 log4j作为输出类,程序不需要任何改动,但是注意:log4j的配置文件 log4j.properties对Log4j来说是必须的。如果classpath中没有该配置文件,或者配置 不对,将会引发运行时异常。所以下面介绍log4j.properties的配置。

    Date: 2013-01-07 17:54:46 CST

    Author: machine of awareness

    Org version 7.8.06 with Emacs version 23

    Validate XHTML 1.0
  • 相关阅读:
    hdu 3790 最短路径问题
    hdu 2112 HDU Today
    最短路问题 以hdu1874为例
    hdu 1690 Bus System Floyd
    hdu 2066 一个人的旅行
    hdu 2680 Choose the best route
    hdu 1596 find the safest road
    hdu 1869 六度分离
    hdu 3339 In Action
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/machine/p/2822227.html
Copyright © 2011-2022 走看看