在J2EE项目中使用log4J+ Commons-logging

首先需要下载log4j和apache Commons-logging的包log4j-1.2.11.jar 和 commons-logging.jar 版本也许不一样,不过无所谓了

然后将这两个jar放到classpath中

<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-logging.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/log4j-1.2.11.jar"/>

注意路径要写正确,我是放在我的项目中的lib目录,所以写的是相对路径

接下来在你项目的类文件的主目录下面,比如项目名称为a,则为a/src下新建一个log4j的配置文件log4j.properties

配置log4j.properties

#log4j.properties

log4j.rootLogger=DEBUG,CONSOLE,A1,FILE,FILE2
log4j.addivity.org.apache=true

#打印到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.Threshold=DEBUG
 log4j.appender.CONSOLE.Target=System.out
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

 #打印到文件 (log文件)

log4j.appender.FILE=org.apache.log4j.FileAppender
 log4j.appender.FILE.File=conf/log/Application.log
 log4j.appender.FILE.Append=true
 log4j.appender.FILE.DatePattern='.'yyyy-ww'.log4j'
 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#将日志信息打印到文件(xml格式)
 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.A1.File=conf/log/Messages.html
 log4j.appender.A1.DatePattern='.'yyyy-ww'.log4j' 
 log4j.appender.A1.layout=org.apache.log4j.HTMLLayout
 log4j.appender.A1.layout.LocationInfo=true
 log4j.appender.A1.layout.Title=hehe_log
 
 
 #将日志信息打印到文件(xml格式)
 log4j.appender.FILE2=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.FILE2.File=conf/log/Messages.xml
 log4j.appender.FILE2.DatePattern='.'yyyy-ww'.log4j' 
 log4j.appender.FILE2.layout=org.apache.log4j.xml.XMLLayout
 log4j.appender.FILE2.layout.LocationInfo=true

新建一个测试类Test.java

import org.apache.commons.logging.*;
public class Test {

 private static Log log=LogFactory.getLog(Test.class);
 public static void main(String[] args) {
  log.debug("DEBUG"); //Third step
        log.info("INFO");
        log.warn("WARN");
        log.error("ERROR");
        log.fatal("FATAL");
 }

}

运行之后在项目的conf/log/目录下就生成了这样几个文件Messages.xml,Messages.html,file.log同时控制台也打印出了相关的信息

在上面的代码里没有一句使用log4j的代码,这就是不直接使用log4j而是用log4j+Commons-logging的好处了

使用Commons-logging的优点

1) 提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密a耦合
2) 很贴心的帮我们自动选择适当的日志实现系统(这一点非常好!)
3) 它不需要配置

这里看一下Commons-logging怎么“‘很贴心的’帮我们‘自动选择’‘适当的’日志实现系统”:
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;
(以上顺序不保证完全准确,请参考官方文档)

也就是说即使上面的项目里不使用log4j,(直接将log4j-jar从项目里删除)代码无需修改,照样可以正常运行

log4j.properties具体配置请看http://tb.blog.csdn.net/TrackBack.aspx?PostId=1802719

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值