log4j下载地址:http://logging.apache.org/log4j/1.2/download.html
要学log4j最好的教程还是看官方文档: http://logging.apache.org/log4j/1.2/manual.html
另外一篇比较好的中文教程:http://dev.youkuaiyun.com/article/21/21291.shtm
这里只做简单介绍,不多说废话。
1 配置文件
个人举得 log4j 很够easy的在程序用使用,关键在于配置文件。
建立配置文件:mylog.properties,内容如下:
#用来作界面显示的...只显示 INFO 等级的log信息
log4j.rootLogger= debug,mylogAppenderName,mylogFile
# mylogAppenderName 在控制台输出
log4j.appender.mylogAppenderName =org.apache.log4j.ConsoleAppender
# 定义布局类型
log4j.appender.mylogAppenderName.layout=org.apache.log4j.PatternLayout
# 定义输出格式
log4j.appender.mylogAppenderName.layout.ConversionPattern= %-10p [%t] %C.%M(%L) | %m%n
# mylogFile 将日志信息输出到文件
log4j.appender.mylogFile=org.apache.log4j.FileAppender
# 日志文件路径
log4j.appender.mylogFile.File=c:\\example.log
# 定义布局类型
log4j.appender.mylogFile.layout=org.apache.log4j.PatternLayout
# 定义输出格式
log4j.appender.mylogFile.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 对配置文件的解释
(1) log4j.rootLogger= info,mylogAppenderName,mylogFile
log4j.rootLogger= LEVEL,appenderName1,appenderName2,appenderName3......
其中 LEVEL 指的是 log4j所定义几个等级,他们的优先级如下:
OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
其中常用的是: ERROR、WARN、INFO、DEBUG
对他们的解释如下:
OFF 是最高等级的,用于关闭所有日志记录。
FATAL 指出每个严重的错误事件将会导致应用程序的退出。
ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。
WARN 表明会出现潜在错误的情形。
INFO 表明 消息在粗粒度级别上突出强调应用程序的运行过程。
DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的。
ALL 是最低等级的,用于打开所有日志记录。
(2) appenderName 指日志信息输出到什么地方。可以同时指定多个输出目的地。主要有如下几种输出目标类型:
更多的类型见:http://logging.apache.org/log4j/1.2/apidocs/index.html
(3) 常用的布局管理器:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
(4) 布局格式:
全部格式见:http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html
其中常用的格式有:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
log4j的缩进格式化类似于c语言中的 printf 的格式定义:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
3 在代码中使用log4j
TestLog .java
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class TestLog {
public static void main(String[] args)
{
PropertyConfigurator.configure("log4j.properties");
//定义
Logger logger = Logger.getLogger(TestLog.class);
logger.fatal("这是 fatal 日志信息。");
logger.error("这是 error 日志信息。");
logger.warn("这是 warn 日志信息。");
logger.info("这是 info 日志信息。");
logger.debug("这是 debug 日志信息。");
}
}
运行的输出结果为:
FATAL [main] TestLog.main(16) | 这是 fatal 日志信息。
ERROR [main] TestLog.main(17) | 这是 error 日志信息。
WARN [main] TestLog.main(18) | 这是 warn 日志信息。
INFO [main] TestLog.main(19) | 这是 info 日志信息。
DEBUG [main] TestLog.main(20) | 这是 debug 日志信息。
c://example.log 文件的内容如下:
2008-10-01 04:42:50:FATAL main TestLog - 这是 fatal 日志信息。
2008-10-01 04:42:50:ERROR main TestLog - 这是 error 日志信息。
2008-10-01 04:42:50:WARN main TestLog - 这是 warn 日志信息。
2008-10-01 04:42:50:INFO main TestLog - 这是 info 日志信息。
2008-10-01 04:42:50:DEBUG main TestLog - 这是 debug 日志信息。
另外可修改配置文中的 log4j.rootLogger= debug,mylogAppenderName,mylogFile 改为
log4j.rootLogger= info,mylogAppenderName,mylogFile
在试后输出结果为:
FATAL [main] TestLog.main(14) | 这是 fatal 日志信息。
ERROR [main] TestLog.main(15) | 这是 error 日志信息。
WARN [main] TestLog.main(16) | 这是 warn 日志信息。
INFO [main] TestLog.main(17) | 这是 info 日志信息。
注意:DEBUG信息没有输出。
原文地址:http://blog.163.com/baiyunping333@126/blog/static/2439447220090311229472/
-
ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。
-
DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。
-
FileAppender 把日志事件写入一个文件
-
RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。
-
WriterAppender根据用户的选择把日志事件写入到Writer或者OutputStream。
-
SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。
-
SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
-
SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
-
SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。
-
TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。
还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。