配置(Configuration)

JCL中有两个基础接口/类:Log(基础日志器)和LogFactory (知道如何创建Log实例)。指定一个特定的Log实现是非常好的实践(无论这个实现是commons-logging提供的还是用户自定义的),而指定默认LogFactory实现之外的实现是为高级用户准备的,在这里不会谈到。默认的LogFactory实现会使用下面的探测步骤来决定最终使用的Log实现(当按此顺序找到第一个匹配时,探测过程会中止):

1.查找名为org.apache.commons.logging.Log配置属性(为了向后兼容1.0之前的版本,名为org.apache.commons.logging.log的属性也会查找)。配置属性可以用Java代码显式地进行设置,但是更常见的做法是在类路径中放置一个名为commons-logging.properties的标准配置文件。当这个文件存在时,文件中的每一个条目都会成为LogFactory的一个属性(attribute)。如果在类路径中存在多个这样的文件时,1.1之前的版本只会使用第一个被找到的文件,在1.1之后,每个文件可以定义一个priority键,拥有最高优先级的文件会被使用(没有定义priority键表示优先级为0)。如果多个文件拥有相同的优先级,第一个被找到的文件会被使用。org.apache.commons.logging.Log配置属性对应的值就是Log实现类的完全限定类名。

2.查找名为org.apache.commons.logging.Log系统属性(为了向后兼容1.0之前的版本,名为org.apache.commons.logging.log的属性也会查找)。

3.如果Log4j日志系统存在于类路径中,则使用其对应的包装类(Log4JLogger,实现了Log接口)。

4.如果应用运行在JDK 1.4及以上的系统上,则使用其对应的包装类(Jdk14Logger,实现了Log接口)。

5.使用默认的简单日志包装类(SimpleLog)。

 

你可以参考JCL的javadocs以获取更多关于JCL中包含的不同Log实现的细节。Log实现的探测细节在那里也有更详细的描述。