在java平台上写程序也有点时日,从以前的j2ee到现在的后台程序,多多少少都用到了log4j来输出日志,不过每次用的时候都是别人配好了,然后告诉我说怎么用,然后直接调用就好,一直对log4j处于一直半解的状态。今天,凭着要知其然,知其所以然的态度,细细的研究了下log4j。
1、在eclipse的使用log4j
对于程序员来讲,最快的方法就是先上手,看到直观效果在说,所以第一步就是怎么让自己的程序能够在eclipse里面使用起来。
第一步:首先,新建一个工程MinaTest,然后添加package,叫testLog4j,然后加入如下代码:
package testLog4j;
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
public class testLog4j {
public static void main(String argv[]) {
// Create a logger by the name of class Log4jTest.
Logger logger = Logger.getLogger(testLog4j .class);
// Use the default configuration.
//BasicConfigurator.configure();
// Set the logger level to Level.INFO
logger.setLevel(Level.INFO);
// This request will be disabled since Level.DEBUG < Level.INFO.
logger.debug("This is debug.");
// These requests will be enabled.
logger.info("This is an info.");
logger.warn("This is a warning.");
logger.error("This is an error.");
logger.fatal("This is a fatal error.");
return;
}
}
第二步:将log4j.jar包加入工程中
上面代码写好以后,在eclipse下是会提示里有语法错误的,因为eclipse不知道到什么地方import对应的class。在package explorer中当前工程点右键->property->java build path,在tab页上选择libraries->ADD JARS,将下载的log4j的jar包添加进来。"ok"之后,你会发现package explorer中当前工程中,除了先前的JRE System Library,还多出来一个Referenced Libraries,里面就是添加的jar包。clean以后,语法错误就没有了。
这个时候,如果我们之间run as application,会得到如下提示:
log4j:WARN No appenders could be found for logger (com.foo).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
因为程序找不到log4j.properties这一配置文件。所以,下面就是把这个配置文件添加到当前的工程中了。
第三步:将log4j.properties添加到当前工程中
1) 在当前工程上右键。new->folder,在弹出的对话框中的"folder name"输入一个文件夹的名字,这里用log4j。然后点击"advanced",选中"link to folder in the file system",“browse”一个目录,一般选当前工程的目录,然后在输入关联的文件夹名,如D:/workspace/MinaTest/log4j。这样才建立的一个关联的目录。接着在package explorer中找到刚刚建立的文件log4j文件夹,import你定义好的log4j.properties(import的过程省了),如果没有现成的,下面这个可做参考:
log4j.rootLogger=DEBUG, R, O
# Stdout
log4j.appender.O=org.apache.log4j.ConsoleAppender
# File
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
先用着,意思等会在说
第四步 编译
在但前package(testLog4j)单击右键,run as->run configuration,然后在弹出的页面的tab页中选择Classpath,选中当前的工程"MinaTest",然后发现右侧的"Advanced"进入可选状态,点击以后,会接着弹出一个对话框,选择"Add folders",找到当前的工程,选择log4j文件夹,然后确定。这样,我们就把log4j.properties添加到当前工程的class path中了。选择run。查看eclipse的console
[2010-06-11 19:44:42,523] INFO 0[main] - testLog4j.testLog4j.main(testLog4j.java:24) - This is an info.
[2010-06-11 19:44:42,533] WARN 10[main] - testLog4j.testLog4j.main(testLog4j.java:25) - This is a warning.
[2010-06-11 19:44:42,533]ERROR 10[main] - testLog4j.testLog4j.main(testLog4j.java:26) - This is an error.
[2010-06-11 19:44:42,533]FATAL 10[main] - testLog4j.testLog4j.main(testLog4j.java:27) - This is a fatal error.
到此,就可以在eclipse里面边写代码边调试了。
2 log4j.properties各项释义
详细的释义可以去看相关的文档,这里只说格式,帮着入门
Log4J配置文件的基本格式如下:
#配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
回过头来看上面
log4j.rootLogger=DEBUG, R, O
这里R,O是表示两个appderName,当然,也可以是别的名字
在往下,就是对这两个appender定义不同的属性
先看 appender O
log4j.appender.O=org.apache.log4j.ConsoleAppender 定义输出到控制台
log4j.appender.O.layout=org.apache.log4j.PatternLayout 定义输出的布局
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n 输出的格式
在看 appender R,区别是输出的地方不一样
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
这的意思是输出到文件中
因此,这个程序在当前工程下还存在一个 log4j.log的文件。
简要介绍,详细的文档google或者直接看官方文档吧!