log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=logfile.log
log4j.appender.logfile.MaxFileSize=512KB
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
这里指定了日志输出的级别 debug.
stdout, logfile 指定日志输出的目的地。 这两个名字可以随便取,比如 A, 或B都可以。 实际的配置是 org.apache.log4j.ConsoleAppender 和RollingFileAppender 用于指定是控制台还是文件。
另外还指定了输出的格式, 已经产生的file 的规则。
3. 测试java 文件
[java]
/**
* @author oscar999
* @date 2013-8-1
* @version V1.0
*/
package com.oscar999.log;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class TestLog4j {
public static void main(String[] args) {
// 1. create log
Logger log = Logger.getLogger(TestLog4j.class);
// 2. get log config file
PropertyConfigurator.configure("log4j.properties");
// 3. start log
log.debug("Here is some DEBUG");
log.info("Here is some INFO");
log.warn("Here is some WARN");
log.error("Here is some ERROR");
log.fatal("Here is some FATAL");
}
}
/**
* @author oscar999
* @date 2013-8-1
* @version V1.0
*/
package com.oscar999.log;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class TestLog4j {
public static void main(String[] args) {
// 1. create log
Logger log = Logger.getLogger(TestLog4j.class);
// 2. get log config file
PropertyConfigurator.configure("log4j.properties");
// 3. start log
log.debug("Here is some DEBUG");
log.info("Here is some INFO");
log.warn("Here is some WARN");
log.error("Here is some ERROR");
log.fatal("Here is some FATAL");
}
}
配置稍显麻烦,但是code 时就简单多了。
commons-logging写日志方式
Commons-logging 也是Apache 提供的日志jar 档。
你有可能要问为什么有了log4j还有提供Commons-logging呢? 这两者有什么区别吗?
其实从Commons-logging这个名字就可以看出来, 这应该是一个日志的共用接口。实际上, 它的确是这样一个作用,
使用Commons-logging的LogFactory获取日志处理类时:
1) 首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则使用其中定义的Log实现类;
2) 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类;
如果在Tomact中可以建立一个叫 :CATALINA_OPTS 的环境变量
给 他的 值 : - Dorg.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog - Dorg.apache.commons.logging.simplelog.defaultlog = warn
3) 否则,查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类;
4) 否则,使用JDK自身的日志实现类(JDK1.4以后才有日志实现类);
5) 否则,使用commons-logging自己提供的一个简单的日志实现类SimpleLog;
先使用第一种方式来看一个实例,配置commons-logging.properties, 使用log4j来记录日志。
注意, commons-logging 要配合log4j 记录日志,必须把log4j的jar 包也导入到项目中。
1. 导入log4j 和commons-logging的jar 包
2. 配置commons-logging.properties 和 log4j.properties, 放入项目的classpath下(也就是src目录下)
注意: 单独使用log4j 的时候,log4j.properties 默认是放在项目的根目录下。
log4j.properties 的内容和上面完全相同。
看一下commons-logging.properties 的配置
[html]
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
org.apache.co