什么罐子
LogFactory来自公共日志包。如果使用LogFactory.getLog,可以用任何实现通用日志接口的logger替换log4j,程序不会受到影响。Apache的common-logging包是一个通用的日志接口,通过它您可以随意指定使用哪个日志系统。增加系统的灵活性。如果log4j不存在,commons-logging将选择另一个日志实现类。这确保了log4j不一定在程序中使用。
增加灵活性的原因:
1)首先在classpath下查找自己的配置文件commons-Logging.properties,如果找到了,就用其中定义的日志实现类;
2)如果找不到commons-Logging.properties的文件,检查系统环境变量org.apache.commons.logging.Log是否已经定义,如果找到,使用定义的日志实现该类;
3)否则,检查类路径中是否有Log4j的包,如果有,自动使用Log4j作为日志实现类;
4)否则使用JDK本身的日志实现类(日志实现类将在JDK1.4之后可用);
5)否则,使用commons-logging提供的简单日志实现simple log类;
为了简化commons-logging的配置,一般不使用commons-logging的配置文件,也不设置与commons-logging相关的系统环境变量,只把Log4j的Jar包放入classpash。这样,commons-logging和Log4j的集成就简单完成了。
根据不同的属性,日志信息通常分为不同的级别,从低到高依次为:调试、信息、警告、错误和致命错误。
基于公共日志的操作模式:
包装组织;
导入org . Apache . commons . logging . log;
导入org . Apache . log4j . logger;
公共类测试扩展标记支持{
公共静态日志Log = Log factory . get Log(test . class);
公共静态无效测试()
{
log . debug(" 111 ");
log . info(" 125 ");
log . warn(" 485 ");
log . error(" error ");
}
公共静态void main(String[] a)
{
test . test();
}
}
基于log4j的运行模式
导入org . Apache . log4j . logger;
导入org . Apache . log4j . property configurator;
公共类TestLog4j {
static Logger Logger = Logger . get Logger(testlog 4j . class);
公共静态void main(String args[]) {
property configurator . configure(" log4j . properties ");
logger.debug("下面是一些调试");
logger.info("这里是一些信息");
logger.warn("这里是一些WARN ");
logger.error("这里有一些错误");
logger.fatal("下面是一些致命的");
}
}
-
Commons-LOGging只包装log4j(当然也包括其他日志实现),具体的日志输出交给它后面的Log4j处理,Log4j默认会去classes目录下找log4j.properties文件。