今天,和夏大侠一块找haoshili项目的bug,说到了log4j日志这一块.他问我知道不知道里面配置文件的含义.我说不知道.原来用了这么久的log4j,每次都是复制粘贴,竟然从来没有研究过里面每一句到底是什么含义.于是决定,今晚了解一下log4j具体是怎么回事,每一个参数时什么含义. 找了好多有关log4j的资料,我认为比较好的都搜藏在"日志"文件夹中了,日后有时间多巩固巩固. 下面看看一个简单的log4j的实现: 先看看代码,然后在说具体含义。 第一步:导入相关的jar包,主要有两个:log4j-1.2.9.jar ,common-logging-1.1.1.jar ![]() 第二部:在src目录下写配置文件 --- log4j.properties 注意:在写配置文件时,不必要的空格不要多,否则,可能会导致错误 ![]() 具体的代码如下: ============================================================== #配置根Logger log4j.rootLogger=INFO,C ###输出在控制台#### log4j.appender.C=org.apache.log4j.ConsoleAppender log4j.appender.C.Target=System.out log4j.appender.C.layout=org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{6}:%L - %m%n 补充: log4j.appender.C=org.apache.log4j.ConsoleAppender log4j.appender.C.Encoding=utf-8 //编码格式 log4j.appender.C.Target=System.out log4j.appender.C.layout=org.apache.log4j.PatternLayout log4j.appender.C.Threshold=WARN //在控制台打印输出的级别 log4j.appender.C.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{6}:%L - %m%n =============================================================== 来看看这里面具体的含义: log4j.rootLogger --> 配置根Logger,意思是log日志从项目的根目录开始,进行日志操作。此处还可以控制某个文件夹或某个类文件的日志。例如:log4j.logger.com.TestLog=DEBUG,D, 意思是只打印com.TestLog类文件的日志。 具体说说log4j.appender.C.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{6}:%L - %m%n 的意思,其他的直接看有关文章即可。 %c 输出日志信息所属的类的全名 %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28 %f 输出日志信息所属的类的类名 %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行 %m 输出代码中指定的信息,如log(message)中的message %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推 %r 输出自应用启动到输出该日志信息所耗费的毫秒数 %t 输出产生该日志事件的线程名 [%-5p]中-5的意思是在输出INFO/DEBUG/WARN/ERROR级别的信息后空几个格 -5代表空5个格 %c{2}:指的是输出的几级目录,如果是2则输出两级目录 com.TestLog 如果是1则直接输出类名TestLog。 第三步:编写测试java类 ![]() package com.baihui; import javax.servlet.http.HttpServlet; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class TestLog extends HttpServlet{ private static Logger logger = Logger.getLogger(TestLog.class); public static void main(String[] args){ //加载配置文件,这里的路径为绝对路径。 PropertyConfigurator.configure("D:/Workspaces/MyEclipse 8.6-(tomcat6.0-jdk6.0)/log4j/src/config/log4j.properties"); System.out.println(2); logger.info("这里在测试"); } } ============================================== 控制台打印效果: ![]() 这是一个仅仅在控制台打印的日志,接下来会有更复杂的日志。 |
|