日志门面接口JCL

前言

commons-logging(JCL)是apache最早提供的日志的门面接口。提供简单的日志实现以及日志解耦功能。
目前JCL已经停止维护了,其最新版本是1.2

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

一、运行时决定使用哪种日志架构

他是apache公司开发的一个抽象日志通用框架,本身不实现日志记录,但是提供了记录日志的抽象方法即接口(info,debug,error…),底层通过一个数组存放具体的日志框架的类名,然后循环数组依次去匹配这些类名是否在app中被依赖了,如果找到被依赖的则直接使用,所以他有先后顺序

//下面是jcl中存放日志技术类名的数组,默认有四个,后面两个可以忽略
 private static final String[] classesToDiscover = {
           "org.apache.commons.logging.impl.Log4JLogger",
            "org.apache.commons.logging.impl.Jdk14Logger",
            "org.apache.commons.logging.impl.Jdk13LumberjackLogger",
            "org.apache.commons.logging.impl.SimpleLog"
};
for(int i=0; i<classesToDiscover.length && result == null; ++i) {
        //创建Log对象
        //可以看到这里的循环条件必须满足result不为空,也就是如果没有找到具体的日志依赖则继续循环,如果找到则条件不成立,不进行循环了
        result = createLogFromClass(classesToDiscover[i], logCategory, true);
}

总结:顺序log4j>jul

二、日志级别

fatal:非常严重的错误,导致系统中止。期望这类信息能立即显示在状态控制台上。
error:其它运行期错误或不是预期的条件。期望这类信息能立即显示在状态控制台上。
warn:使用了不赞成使用的API、非常拙劣使用API, ‘几乎就是’错误, 其它运行时不合需要和不合预期的状态但还没必要称为 “错误”。期望这类信息能立即显示在状态控制台上。
info:运行时产生的有意义的事件。期望这类信息能立即显示在状态控制台上。
debug:系统流程中的细节信息。期望这类信息仅被写入log文件中。
trace:更加细节的信息。期望这类信息仅被写入log文件中。

通常情况下,我们希望将info级别以上的日志信息输出到控制台,而debug级别以上的信息写入到log文件中,而error信息写入到一个单独的文件中去,下面我们的实例将会实现这样的功能。

发布了34 篇原创文章 · 获赞 0 · 访问量 1351

猜你喜欢

转载自blog.csdn.net/qq_41071876/article/details/105404597
JCL
今日推荐