Logger.getLogger和 LogFactory.getLog

Logger.getLogger 
LogFactory.getLog

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 文件

=================================

log4j能否自动创建文件夹
例如:我要把log文件输出到
F:\\log\\testLog.log
但是我的F盘并没有log文件夹
那么在程序中是否可以通过配置log4j来实现自动创建一个log文件夹?

log4j 版本在1.2.9以上就完全可以了。

Logger.getLogger和 LogFactory.getLog的更多相关文章

  1. Logger.getLogger()和LogFactory.getLog()的区别

    第一.Logger.getLogger()和LogFactory.getLog()的区别 1.Logger.getLogger()是使用log4j的方式记录日志: 2.LogFactory.getLo ...

  2. Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j)

    Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j) 博客分类: Java综合   第一.Logger.getLogger()和Log ...

  3. Logger.getLogger和LogFactory.getLog的区别

    Logger来自log4j自己的包.如果用Logger.getLogger,需要一个log4j的jar包,用此方式你只能依靠log4j: LogFactory来自common-logging包.如果用 ...

  4. Logger.getLogger()和 LogFactory.getLog()

    Logger.getLogger()和LogFactory.getLog()的区别:    1.Logger.getLogger()是使用log4j的方式记录日志:2.LogFactory.getLo ...

  5. Logger之Logger.getLogger(CLass)

    之前一直在使用System.out.println()来调试.但是用这种方式开发项目部署到生产环境,会因为众多的控制台输出降低应用的性能.这时候Log4J就成为可平衡开发和部署应用的利器了. 在项目中 ...

  6. Logger之Logger.getLogger(CLass)技巧代替system.out.print

    ---恢复内容开始--- 尊重原创:http://www.cnblogs.com/zxf330301/p/5876117.html 之前一直在使用System.out.println()来调试.但是用 ...

  7. java中的 private Logger log=Logger.getLogger(this.getClass());

    this.getClass()得到什么? this 表示当前对象的引用: getClass() 是 java.lang.Object 中的方法,它返回一个对象的运行时类: this.getClass( ...

  8. java中Logger.getLogger(Test.class)

    java中Logger.getLogger(Test.class) log4的使用方法: log4是具有日志记录功能,主要通过一个配置文件来对程序进行监测有两种配置方式:一种程序配置,一种文件配置有三 ...

  9. java中Logger.getLogger(Test.class),即log4日志的使用

    log4的使用方法: log4是具有日志记录功能,主要通过一个配置文件来对程序进行监测有两种配置方式:一种程序配置,一种文件配置有三个主要单元要了解,Logger,appender,layout. l ...

随机推荐

  1. 语音识别完成诗句的查询功能,iOS AVSpeechSynthesis语音输出结果的诗歌APP

    前言 当前的APP的查询都是使用手动输入,不仅效率低,而且查询的语句的限制比较大,不能够方便的扩展. 如果能方便的扩展查询语句,那么APP的使用就会有很大的灵活性.可以设计各种问句和语句,可以方便的和 ...

  2. 解析PHP多种序列化与反序列化的方法

    1. serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数. 复制代码 代码如下: <?php$a = array('a'=> 'Apple' ,' ...

  3. Git相关操作三

    1.显示当前分支: git branch 输入上述命令可以显示出分支,*所在的分支为当前分支. 2.新建分支: git branch new_branch new_branch为新建分支的名称,注意该 ...

  4. 【ASP.NET MVC 学习笔记】- 15 Unobtrusive Ajax

    本文参考:http://www.cnblogs.com/willick/p/3418517.html 1.Unobtrusive Ajax允许我们通过 MVC 的 Help mothod 来定义 Aj ...

  5. 手把手教你解决无法创建 JPA 工程的问题

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703803.html ------------------------------------ ...

  6. java笔记02

    一,编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数 /** * */ package 课堂2; import java.util.Random; /** * @author 信16 ...

  7. Hibternate框架笔记

    Hibernate框架 配置 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE h ...

  8. 一起来学linux:NFS服务器搭建

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } nfs是network file system的缩写,作用在于让不同的网络,不同的机 ...

  9. [Bayesian] “我是bayesian我怕谁”系列 - Variational Inference

    涉及的领域可能有些生僻,骗不了大家点赞.但毕竟是人工智能的主流技术,在园子却成了非主流. 不可否认的是:乃值钱的技术,提高身价的技术,改变世界观的技术. 关于变分,通常的课本思路是: GMM --&g ...

  10. ES6 for-of循环和迭代器使用细节

    SE5之前我们可以用for循环来遍历数组,SE5为数组引进了新的方法forEach(),方便了很多,但是该方法不能够通过break或者return返回外层函数. arr.forEach(functio ...