欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Logger.getLogger()与LogFactory.getLog()的区别详解

程序员文章站 2023-12-18 12:34:34
logger来自log4j自己的包。如果用logger.getlogger,需要一个log4j的jar包,用此方式你只能依log4j: logfactory来自comm...

logger来自log4j自己的包。如果用logger.getlogger,需要一个log4j的jar包,用此方式你只能依log4j:

logfactory来自common-logging包。如果用logfactory.getlog,你可以用任何实现了通用日志接口的日志记录器替换log4j,而程序不受影响。apache的common-logging包是通用日志接口,通过这个中间层,你可以随便指定到底用哪个日志系统。增加系统的灵活性。若log4j它不存在, commons-logging 会另行选择其它的日志实现类。 这样保证了程序中不一定要使用log4j这个日志文件了

增强灵活性的理由:
1)
首先在 classpath 下寻找自己的配置文件 commons-logging.properties ,如果找到,则使用其中定义的 log 实现类;

2)如果找不到 commons-logging.properties 文件,则在查找是否已定义系统环境变量 org.apache.commons.logging.log ,找到则使用其定义的 log 实现类;

3)否则,查看 classpath 中是否有 log4j 的包,如果发现,则自动使用 log4j 作为日志实现类;

4)否则,使用 jdk 自身的日志实现类( jdk1.4 以后才有日志实现类);

5)否则,使用 commons-logging 自己提供的一个简单的日志实现类 simplelog ;

为了简化配置 commons-logging ,一般不使用 commons-logging 的配置文件,也不设置与 commons-logging 相关的系统环境变量,而只需将 log4j 的 jar 包放置到 classpash 中就可以了。这样就很简单地完成了 commons-logging 与 log4j 的融合。

根据不同的性质,日志信息通常被分成不同的级别,从低到高依次是:“调试( debug )”“信息( info )”“警告( warn )”“错误(error )”“致命错误( fatal )”。

基于common-logging的运行方式:

复制代码 代码如下:

package org;
import org.apache.commons.logging.log;
import org.apache.log4j.logger;
public class test extends tagsupport{
public static log log=logfactory.getlog(test.class);
public static void test()
{
log.debug("111");
log.info("125");
log.warn("485");
log.error("error");

}
public static void main(string[] a)
{
test.test();
}
}


基于log4j的运行方式
复制代码 代码如下:

import org.apache.log4j.logger;
import org.apache.log4j.propertyconfigurator;
public class testlog4j {

static logger logger = logger.getlogger(testlog4j.class);
   public static void main(string args[]) {
   propertyconfigurator.configure("log4j.properties");
   logger.debug("here is some debug");
   logger.info("here is some info");
      logger.warn("here is some warn");
      logger.error("here is some error");
      logger.fatal("here is some fatal");
   }
}


commons-logging 仅仅对 log4j( 当然还包括其它 log 实现 ) 作了一层包装,具体的日志输出还是在内部转交给身后的 log4j 来处理,还有log4j会默认的去classes目录下去寻找log4j.properties 文件

上一篇:

下一篇: