有句话我比较喜欢,叫做贵在坚持。一个人,哪怕只有一个好习惯,如果他坚持下去了,肯定会收益终身。
今天我讲下Apache中的一个Log4j子项目。
在JAVA项目开发中,最初我们喜欢调用System.out.println将调试信息打印在控制台上。但是这样做存在
一些不好的地方。比如在发布应用程序时,要将所有代码里的打印语句删除掉有时候会相当麻烦。另外如果
希望将调试信息打印在其它地方(比如说文件)或者以一定格式输出调试信息,System.out.println会显得
力不从心。为了统一标准,方便进行程序调试,Apache推出了Log4j框架。好,废话少说,下面讲解一下
Log4j的一些基本知识。
首先是下载Log4j:
Log4j的官网下载地址是 http://logging.apache.org/log4j/1.2/
(现在最新是log4j 2.0 beta1)
如果是Windows用户,应该下载ZIP格式的压缩包。
Log4j应该有一个(或多个)配置文件,log4j.properties是默认的log4j配置文件。
下面重点讲解下配置文件的配置。
1.级别配置:
一般常用的有5个级别,由低到高的顺序为:DEBUG<INFO<WARN<ERROR<FATAL.
2.输出源配置:
输出源名称可以任意,常见的输出源有:CONSOLE(控制台),FILE(输出到文件).
3. 布局方式
布局方式有很多:org.apache.log4j.HTMLLayout org.apache.log4j.PatternLayout org.apache.log4j.SimpleLayout
下面给出一个简单的log4j.properties配置文件:
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%m%n
第一行设置级别为DEBUG模式,输出源名称为A1(用逗号分隔)
第二行设置输出源A1为控制台
第三行设置输出源A1的布局为模式布局
第四行设置布局方式,%m代表消息内容,%n代表换行
设置好配置文件,下面打开Eclipse,新建一个Java项目。
把下载好的log4j里的log4j JAR文件添加到工程中。
把写好的log4j.properties配置文件复制到工程里的src目录里(因为部署时,会将src目录里的文件放到classpath里去)
在src目录里新建一个类文件。
下面是一个示例:
package test;
import org.apache.log4j.Logger;
public class Test {
private static Logger logger = Logger.getLogger("Test");
public static void main(String args[]) {
logger.debug("debug message");
logger.info("info message");
logger.warn("warn message");
logger.error("error message");
logger.fatal("fatal message");
}
}
注意,配置文件名称如果不为log4j.properties,则程序会报错。
在调用Logger的不同级别消息方法时,必须大于等于配置文件里的设置级别。
比如如果配置文件里设置为WARN级别,如果调用Logger.debug()方法,将不会有任何输出。
配置文件如果不是叫做log4j.properties也行,不过要明确告诉JVM。关键代码如下:
import org.apache.log4j.PropertyConfigurator;
String name="test.properties";//你的配置文件名称
PropertyConfigurator.configure(name);//动态配置文件
上面是将信息输出到控制台上。
下面给出另外一个例子,将信息输出到文件中去。
log4j.rootLogger=DEBUG, A2
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.file=src/test.log
log4j.appender.A2.layout=org.apache.log4j.SimpleLayout
上面指定将日志信息输出到文件中(test.log)。
注意配置文件名要为log4j.properties。
JAVA代码和上面的类似。
当然,也可以将日志信息输出到html文件中去:
关键代码为:
log4j.rootLogger=ERROR,A3
log4j.appender.A3=org.apache.log4j.FileAppender
log4j.appender.A3.file=src/test.html
log4j.appender.A3.layout=org.apache.log4j.HTMLLayout