• 使用Commons Logging


    Commons Logging

    和Java标准库提供的日志不同,Commons Logging是一个第三方日志库,它是由Apache创建的日志模块,需要导入commons-logging-1.2.jar

    Commons Logging的特色是,它可以挂接不同的日志系统,并通过配置文件指定挂接的日志系统。默认情况下,Commons Logging自动搜索并使用Log4jLog4j是另一个流行的日志系统),如果没有找到Log4j,再使用JDK Logging

    使用Commons Logging只需要和两个类打交道,并且只有两步:

    1. 先通过LogFactory获取Log类的实例;
    2. 然后使用Log实例的方法打日志。
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    public class Main {
        public static void main(String[] args) {
            Log log = LogFactory.getLog(Main.class);
            log.info("start...");
            log.warn("end.");
        }
    }

    运行结果如下:

    八月 07, 2019 9:58:08 上午 Main main
    信息: start...
    八月 07, 2019 9:58:08 上午 Main main
    警告: end.

    Commons Logging定义了6个日志级别:

    • FATAL
    • ERROR
    • WARNING
    • INFO
    • DEBUG
    • TRACE

    默认级别是INFO

    1)在静态方法中引用Log

    使用Commons Logging时,如果在静态方法中引用Log,通常直接定义 大专栏  使用Commons Logging一个静态类型变量:

    public class Main {
        static final Log log = LogFactory.getLog(Main.class);
    
        static void foo() {
            log.info("foo");
        }
    }

    2)在实例方法中引用Log

    public class Person {
        protected final Log log = LogFactory.getLog(getClass());
    
        void foo() {
            log.info("foo");
        }
    }

    注意到实例变量log的获取方式是LogFactory.getLog(getClass()),虽然也可以用LogFactory.getLog(Person.class),但是前一种方式有个非常大的好处,就是子类可以直接使用该log实例。例如:

    // 在子类中使用父类实例化的log:
    public class Student extends Person {
        void bar() {
            log.info("bar");
        }
    }

    由于Java类的动态特性,子类获取的log字段实际上相当于LogFactory.getLog(Student.class),但却是从父类继承而来,并且无需改动代码。

    3)info(String, Throwable)

    Commons Logging的日志方法,除了标准的info(String)外,还提供了一个非常有用的重载方法:info(String, Throwable),这使得记录异常更加简单:

    try {
        ...
    } catch (Exception e) {
        log.error("got exception!", e);
    }

    他の者にできたか?ここまでやれたか?この先できるか?いいや、仆にしかできない!
  • 相关阅读:
    canvas框架::createjs入门
    JS生成随机的由字母数字组合的字符串
    Meta标签中的format-detection属性及含义
    让iframe可编辑
    数组原型方法调用及函数apply调用时 类数组参数在IE8下的问题
    开发常用链接
    idea备忘
    curl导入到postman后修改body数据Content-Length不变导致json数据解析失败
    maven-shade-plugin插件使用的注意事项
    解决服务器密码修改后mac终端ssh连接报错
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12361051.html
Copyright © 2020-2023  润新知