下面是一个完整的Log4j配置文件,这个配置文件指定了两个输出源stdout和R。前 者把日志信息输出到控制台,后者
是一个轮转日志文件。最大的文件是100KB,当一个日志文件达到最大尺寸时,Log4J会自动把example.log 重命名为
example.log.1,然后重建一个新的example.log文件,依次轮转。
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.FileAppender
log4j.appender.stdout.File=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.cc.ejb.my=error,out
log4j.appender.out=org.apache.log4j.ConsoleAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.cc.ejb.my.son=debug
log4j.additivity.cc.ejb.my.son=false
在代码中使用Log4j
一、得到记录器
使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:
public static Logger getLogger( String name)
通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:
static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )
二、读取配置文件
当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:
//自动快速地使用缺省Log4j环境。
BasicConfigurator.configure ();
//读取使用Java的特性文件编写的配置文件
PropertyConfigurator.configure ( String configFilename);
//读取XML形式的配置文件
DOMConfigurator.configure ( String filename );
三、插入记录信息(格式化日志信息)
当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如
下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
四、例子
我们通过下面这个简单的例子,来演示在程序如何使用Log4j,您可以修改配置文件以得到不同日志信息。
package cc.ejb.my;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import my.son.Foo;
public class TestApp {
static Logger logger=Logger.getLogger(TestApp.class.getName());
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
logger.info("Applcaiton Starts");
logger.warn("Bar Starts");
Bar bar=new Bar();
logger.error("Bar Errors");
bar.doIt();
logger.warn("Bar Exits");
logger.info("Foo Starts");
Foo foo=new Foo();
logger.error("Foo Errors");
foo.doit();
logger.warn("Foo exits ");
logger.info("Applcaition Exits");
}
}
class Bar
{
static Logger logger = Logger.getLogger(Bar.class.getName());
public void doIt() {
logger.debug("Did it again!");
}
}
package cc.ejb.my.son;
import org.apache.log4j.Logger;
public class Foo {
private Logger log=Logger.getLogger(Foo.class.getName());
public Foo() {
log.info("Foo Initialzie");
}
public void doit()
{
log.debug("Do it in Foo");
}
}