Log4j配置与使用(简介)
1.日志消息类型(级别) TRACE、DEBUG、INFO、WARN、ERROR、FATAL
他们的级别是由低到高排列的。当设置最低输出级别为INFO时,TRACE和DEBUG的消息将不会被输出。
2.日志的三个层次:Loggers、Appenders、Layouts
Logger:就是输出日志的层次结构。比如:com是com.guan的父日志,对com设置的所有特性,com.guan将完全继承,同时com.guan也可以具有额外的配置特性。
Appender:是指日志输出定向的配置,可以将日志输出到控制台、文件、图形界面、远程socket服务,JMS,NT Event Loggers或者是远程的Unix系统日志进程。
Layout:输出格式的样式,就是你用怎样的格式输出日志信息。
3.可使用的函数,给出一个测试实例:
package com.upc.upcgrid.guan.utility;
import java.io.File;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.junit.Test;
public class Log4jTest {
//定义一个logger,直接获取一个类名的log。(这很常用,因为这种类的结构可以当做logger的层次结构
public static Logger logger =Logger.getLogger(Log4jTest.class.getName());
@Test
public void testLog4j(){
//指定log4j的配置文件的位置
PropertyConfigurator.configure(System.getProperty("user.dir")+File.separator+"conf"+File.separator+"log4j.properties");
logger.error("error message");//输出错误信息
logger.debug("debug message");//输出调试信息
logger.fatal("fatal message");//输出终止错误
logger.info("info message");//输出消息
System.out.println("log test");//标准输出
}
}
输出结果:
2011-05-05 15:07:36.078:: 0[main] ERROR com.upc.upcgrid.guan.utility.Log4jTest
ERROR error message
2011-05-05 15:07:36.093:: 15[main] FATAL com.upc.upcgrid.guan.utility.Log4jTest
FATAL fatal message
2011-05-05 15:07:36.093:: 15[main] INFOcom.upc.upcgrid.guan.utility.Log4jTest
INFO infomessage
log test
4.配置文档内容:
#标准输出使用控制台,这样标准输出的内容将提交给console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#输出到标准输出
log4j.appender.stdout.Target=System.out
#格式是指定的
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#指定输出格式
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS}:: %-4r [%t] %-5p %c %x %n%-5p %m%n
#rootLogger info以上的内容将被输出,stdout的内容也将被输出,同时指定另一个输出(这里将控制台输出的相同内容输出到文件中)
log4j.rootLogger=info, stdout, R
#使用RollingFileAppender,就是当文件的内容超过指定大小时,将会备份原有日志文件,同时创建新的日志文件,继续记录日志
log4j.appender.R=org.apache.log4j.RollingFileAppender
#日志文件的名字,备份文件名字为日志文件名+一个数字标签
log4j.appender.R.file=gridServer.log
#最大日志文件上限,如果超过这个上限,将创建新的日志文件
log4j.appender.R.MaxFileSize=100KB
#最大的备份文件个数,这里指定备份文件为一个
log4j.appender.R.MaxBackupIndex=1
#输出到文件的格式
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#输出到文件格式的定义
log4j.appender.R.layout.ConversionPattern=%d{yyyy-mm-ddHH:mm:ss.SSS} ::%-4r [%t] %-5p %c %x %n%-5p %m%n
5.格式:
-X号:X信息输出时左对齐;
%p:输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格
式,比如:%d{yyyy-MMM-dd-HH:mm:ss,SSS},输出类似:2002年10月18日
22:10:28,921
%r:输出自应用启动到输出该log信息耗费的毫秒数
%c:输出日志信息所属的类目,通常就是所在类的全名
%t:输出产生该日志事件的线程名
%l:输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生
的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像javaservlets
这样的多客户多线程的应用中。
%%:输出一个"%"字符
%F:输出日志消息产生时所在的文件名称
%L:输出代码中的行号
%m:输出代码中指定的消息,产生的日志具体信息
%n:输出一个回车换行符,Windows平台为"rn",Unix平台为"n"输出日志信
息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对
齐方式。
通过上面的配置和运行,不但在控制台可以输出日志内容,同时在文件中同样可以得到日志内容。
更多信息:http://logging.apache.org/log4j/1.2/manual.html
如果需要通Jetty或tomcat等结合日志需要添加jar包:
jcl-over-slf4j-1.5.8.jar和slf4j-api-1.5.8.jar 具体的jar版本与具体的应用有关。
这时jetty和tomcat的输出内容与我们定义的输出内容会结合在一起。