风行天下

JAVA太极
posts - 4, comments - 10, trackbacks - 0, articles - 55
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Commons Logging + Log4j快速入门

Posted on 2005-04-19 16:17 风太少 阅读(421) 评论(0)  编辑  收藏

所谓快速入门,就是用最简明的代码以及配置文件让你把它用起来。总共只有30行左右的内容,用上一遍,再看看代码,基本上就可以弄明白commons logging和log4j的用法了。

如果你想真正弄明白commons logging,可以看它网站上提供的user guide:http://jakarta.apache.org/commons/logging/guide.html
竹笋炒肉(http://hedong.3322.org)的站长曾把其中精要部分翻译出来:Jakarta Commons Logging学习笔记
http://hedong.3322.org/archives/000316.html) (选择GB2312编码)

如果你想学习log4j的配置文件,小鱼儿的网络日志上有一篇:一个全面的Log4j属性配置文件(http://www.blogbus.com/blogbus/blog/diary.php?diaryid=278262),非常棒。

在运行下边的程序之前,你需要先下载commons logging和log4j的jar包,google一下就有了。程序里有一点注释,记得看看。

共三个文件:LogFoo.java、commons-logging.properties、log4j.properties

LogFoo.java

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LogFoo {
    //考考你;我这里为什么要用protected和final?
    protected final Log logger = LogFactory.getLog(getClass());
    LogFoo() {
        logger.info("this is a log test");
        logger.warn("warn");
        logger.error("error");
    }

    public static void main(String[] args) {

        //在log4j.properties我们让日志文件输出到messageapp.log,没有指明路径。你可以用下边这行语句找到messageapp.log的位置,也就是user.dir
        //System.out.println(System.getProperty("user.dir"));
        //commons-logging.properties和log4j.properties应该位于class应用的目录,如果你不知道改放哪,可以用下边这句查查。在这个例子里,和LogFoo.java放一处就行了。
        //System.out.println(System.getProperty("java.class.path"));
        LogFoo lf = new LogFoo();
    }
}

commons-logging.properties

#比较常用的有SimpleLog(commons logging自带的一个简单实现)、Jdk14Logger(JDK 1.4所带的logger)、Log4JLogger(就是我们这次用Log4J了)。另外在有些贴子里有人使用Log4JCategoryLog或Log4jFactory,这两个都是已经被Deprecat了的,不要用。
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

log4j.properties

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern==%d{yyyy-MM-dd HH:mm:ss} [%c] %p:%L -%m%n

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\messageapp.log
log4j.appender.file.MaxFileSize=512KB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern==%d{yyyy-MM-dd HH:mm:ss} [%c] %p:%L -%m%n

#注意一下,网上有些贴子的示例程序之所以跑完看不到log,原因就是他们把rootLogger=info设置为warn级别,而程序里则只调用logger.info()方法,自然就不会产生log文件了。
log4j.rootLogger=info, stdout, file
log4j.logger.my.foo = error, file


只有注册用户登录后才能发表评论。


网站导航: