1 commons-logging
有两个基本的抽象类:Log(基本记录器)和LogFactory(负责创建Log示例)。当commons-logging.jar被加入到classpath之后,它会合理地猜测你想用的日志工具,让后进行自我设置,用户根本不需要做任何设置。
默认的LogFactory是按照下列的步骤去发现并决定哪个日志工具将被使用的:
1 寻找当前factory中名叫org.apache.commons.logging.Log配置属性的值
2 寻找系统中属性中名叫 org.apache.commons.logging.Log的值
3 如果应用程序的classpath中有log4j,则使用相关的包装(wrapper)类(Log4JLogger)
4 如果应用程序运行在jdk1.4的系统中,使用相关的包装类(Jdk14Logger)
5 使用建议日志包装类(simpleLog)
2 目前常用的是Commoons-logging和Log4j结合使用。步骤如下(这只是个概念上的流程)
2.1 部署日志器
下载commons-logging.jar和log4j.jar包,然后把他们放到工程lib目录下,引入工程中。
2.2 指定日志器
在属性文件common-logging.properties中设置实现接口的类。
#commons-logging.properties文件配置信息
# org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
#利用log4j为输出介质
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
#JDK5 Logger
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
2.3 org.apache.commons.logging.Log接口中定义的犯法,按严重性由高到低的顺序有:
log.fatal(Object message);//非常严重的错误,导致系统中止,期望这类星系能够立即显示到控制台
log.fatal(Object message, Throwable t);
log.error(Object message);//其运行错误或不是预期的结果,期望这类信息能立即显示在控制台
log.error(Object message, Throwable t);
log.warn(Object message);//类似于java的黄色感叹号,期望这类信息能够立即显示在控制台
log.warn(Object message, Throwable t);
log.info(Object message);//运行时产生的有意义的时间。期望这类信息能立即显示在控制台上
log.info(Object message, Throwable t);
log.debug(Object message);//系统流程中的细节信息。期望这类信息仅写入log文件中
log.debug(Object message, Throwable t);
log.trace(Object message);//更加细节的信息。期望这类信息仅写入log文件中
log.trace(Object message, Throwable t);
3 使用common-logging进行开发(这个是实例)
3.1 将common-logging.jar包加入到环境变量或者classpath.
3.2 导入org.apache.commons.logging.Log;org.apache.commons.logging.LogFactory包
3.3 代码如下
package sample;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Test {
private static Log log = LogFactory.getLog(Test.class);
public void log(){
log.debug("Debug info.");
log.info("Info info");
log.warn("Warn info");
log.error("Error info");
log.fatal("Fatal info");
}
public static void main(String[] args) {
Test test = new Test();
test.log();
}
}