commons-logging与log4j的贴心组合

一.查找 LogFactory 的顺序:

1.从系统属性中查找键为 org.apache.commons.logging.LogFactory 的值作为 LogFactory 的实现类

2.使用 JDK1.3 jar 的 Service Provider Interface(SPI) 类发现机制,从配置文件 META-INF/services/org.apache.commons.logging.LogFactory 的的第一行读取 LogFactory 的实现类名。
这个 META-INF/services/org.apache.commons.logging.LogFactory 文件可以是某个 Web 应用的根目录中
也可以在 classpath 下,如某个 Jar 包中,WebRoot/WEB-INF/classes 中等。这里需多加留心下 META-INF/services/org.apache.commons.logging.LogFactory 这个目录层次及文件名。

3.在 classpath 下的 commons-logging.properties 文件中的,找到 org.apache.commons.logging.LogFactory 属性值作为 LogFactory 实现类

4. 前面三步未找个 LogFactory 的实现类,或有任何异常的情况下,就用默认的实现类,即 LogFactory 为我们准备的 org.apache.commons.logging.impl.LogFactoryImpl

二.commons-logging.properties可选配置
org.apache.cmmons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

三.查找LogFactoryImpl.getLog()的logger的顺序:
1. commons-logging.properties 中的 org.apache.commons.logging.Log 指定的 Log 实现类

2. 如果Log4j可用则用org.apache.commons.logging.impl.Log4JLogger

3. 如果Jdk1.4 Logger 可用就用 org.apcache.commons.logging.impl.Jdk14Logger(JDK1.4 开始自带)

4. 如果SimpleLog 可用就用 org.apache.commons.logging.impl.SimpleLog(commons-logging 自带)

你可能感兴趣的:(apache,log4j,Web)