首先需要下载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