Posted on 2005-04-19 16:17
风太少 阅读(424)
评论(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