二十一、Log4J工具

一、Log4J的基本概念

1.1. 什么是Log4J?
		什么是LOG4J?
			Log4J是Apache的一个开放源代码项目,它是一个日志操作包.
			1.通过使用Log4J,可以指定日志信息输出的目的地,如控制台、文件、CUI组件、NT的事件记录器;
			2.可以控制每一条日志输出格式。此外,通过定义日志信息的级别,能够非常细致地控制日志的输出,
			3.最令人感兴趣的是,这些功能可以通过一个配置文件来灵活进行配置,而不需要修改应程序代码。
1.2 Log4J出现的原因
		要在程序中输出日志,最普通的做法就是在代码中嵌入语句,
		这些打印语句可以把日志输出到控制台或文件中,
		比较好的做法就是构造一个日志操作类来封装此类操作,
		而不是让一系列的打印语句充斥代码的主体。
1.3 Log4J的组成
	+++ Log4J主要由三大组件构成:
			
			1.Logger组件:负责生成日志,以及日志的输出级别
	
			2.Appender组件:指定日志输出的位置。这些地方可以是控制台、文件、网络设备等
			
			3.Layout组件: 指定日志的输出格式

			这个3个组件协同工作,使得开发者能够依据日志信息类别记录信息,并能够在
			程序运行期间,控制日志信息的输出格式以及日志存放地点。


		
		一个Logger可以有多个Appender,意味这日志可以输出到多个位置。
		
		一个Appender对应一个Layout,意味这一个appender对应这一种日志格式。
		

在这里插入图片描述

1.4 Log4.properties配置文件

	+++ log4j.properties配置文件放在classpath路径下,Log4j工具会自动加载。
	
	+++ log4j.properties配置文件的作用:
			指定相关组件的核心类路径,反射创建对象,为Log4J工具来使用。
			
			它就相当于一个Bean工厂配置文件,配置Log4J工具需要的核心类。
			

二、Log4J的基础案例

		1.导包
		2.配置log4j.properties
		3.使用
2.1 导包
	导包:
		1.commons-logging-1.1.3.jar
		2.log4j-1.2.11.jar
		
2.2 配置log4j.properties配置文件
	将该配置文件放在classpath路径下。
	log4j默认会加载classpath路径下的log4j.properties配置文件。
#1.指定logger
## 		设定Log4j的日志级别(error warn info  debug)
## 		输出目的地(Console, logfile是appender的名字,是自己定义的,后面才赋予具体的含义)
log4j.rootLogger=error, Console, logfile, A1


###################################################################################################################

#2.输出内容到控制台
#	1.设置核心类:org.apache.log4j.ConsoleAppender 表明 Console是控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender


#	2.设置布局类:org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
log4j.appender.Console.layout=org.apache.log4j.PatternLayout

#   3.设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.Console.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################

#3.输出内容到文件,	文件大小到达指定尺寸的时候产生一个新的文件
#   1.设置核心类:org.apache.log4j.RollingFileAppender
log4j.appender.logfile=org.apache.log4j.RollingFileAppender

#	     设定文件的输出路径(指定文件的名字和路径,tomcat的启动路径)
log4j.appender.logfile.File=logstrore.log

#	     设定后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logstrore.log.1文件
log4j.appender.logfile.MaxFileSize=2048KB

#	   Keep three backup files.指定可以产生的滚动文件的最大数
log4j.appender.logfile.MaxBackupIndex=4

#	2.设置布局类:org.apache.log4j.PatternLayout
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

#   3.设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.logfile.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################

#3.输出内容到文件,	文件大小到达指定尺寸的时候产生一个新的文件【只能把日志输出一个文件,不推荐】
#   1.设置appender核心类:org.apache.log4j.FileAppender
log4j.appender.A1=org.apache.log4j.FileAppender

log4j.appender.A1.file=my.txt

#   2.设置appender核心类的layout布局类
log4j.appender.A1.layout=org.apache.log4j.TTCCLayout


2.3 测试

Demo.java

public class Demo {
	public static void main(String[] args) {
		 	
		Log log=LogFactory.getLog(Demo.class);
		
		log.debug("debug-msg");
		log.info("info-msg");
		log.warn("warn-msg");
		log.error("error-msg");
	
		
	}
}

三、Log4j 配置文件的详解

	
	1.将 log4j.prperties 配置文件放在 classapth路径下。
	   Log4J会自动加载该配置文件。
	
	2.该配置文件的作用?
		  该配置文件相当于一个工厂配置文件。类似于一个Bean工厂。
		  
		  			如:
		  				a.在配置文件中指定Log4J组件的日志级别,控制日志输出。
		  				b.在配置文件中指定appender组件的核心类的全路径,以及相关设置。
		  				  可以反射创建对象, 
		  				c.在配置文件中指定layout组件的核心类的全路径,以及相关设置,
		  				  可以反射创建对象。  
  
 

3.1 配置Log4j组件(指定日志级别)

	log4j.rootLogger=error, appenderName1,appenderName2..

	  
	  1. 第一个参数为日志级别(DEBUG<	INFO <	WARN <	ERROR )
			
			log4j.rootLogger=INFO, A1
			控制日志级别为info,即info级别以下的不打印(debug),info级别以上的打印(info,warn,error)。
			
		 第二个参数appenderName,为appender组件对象的名称。可以随意设置。		
										
	 2. 		
 		log4j.rootLogger=INFO, A1  		设置一个叫A1的appender组件。

 		log4j.rootLogger=INFO, A1,A2    设置两个appender组件,名称分别为A1、A2。

 		log4j.rootLogger=INFO, A1,A2,A3 设置三个appender组件,名称分别为A1、A2、A3。

3.2 配置appender组件(指定日志输出到位置)

在这里插入图片描述

        log4j.appender.appenderName =appenderClass
		
		+++ appenderName
					在设置Log4J组件级别的时候设置的名称,两个名称一致。
		
		
		+++ appenderClass
					指定appender组件的核心类,该核心类由Log4j组件提供。
					
					Log4J工具自动加载配置文件,然后根据配置文件指定的类的全路径,
					来反射创建对象。这样做的目的就是配置文件相当于一个Bean工厂,
					实现解耦。

					appenderClass:
						       	  1.org.apache.log4j.ConsoleAppender(输出内容到控制台)
						          2.org.apache.log4j.FileAppender(文件) 【只能把日志输出一个文件,不推荐】
						          3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
						          4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
						          5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
		
A. ConsoleAppender项(输出内容到控制台)
   		Threshold=WARN			指定日志消息的输出最低层次。
    	ImmediateFlush=true		默认值是true,意谓着所有的消息都会被立即输出。
    	Target=System.err		默认情况下是:System.out,指定输出控制台

例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.ConsoleAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.ImmediateFlush=true
		log4j.appender.A1.Target=System.err

B. FileAppender项(输出内容到一个文件)

			Threshold=WARN			指定日志消息的输出最低层次。
			ImmediateFlush=true		默认值是true,意谓着所有的消息都会被立即输出。
			File=mylog.txt			指定消息输出到mylog.txt文件。
     		
     		Append=false			默认值是true,即将消息增加到指定文件中,			
     								false指将消息覆盖指定的文件内容。

例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.FileAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.Append=false

		## 输出日志内容到classpath路径下--	
		##		log4j.appender.A1.File=mylog.txt
		## 输出日志内容到classpath路径下的上一层--	
		##		log4j.appender.A1.File=../mylog.txt
		log4j.appender.A1.File=mylog.txt

C. DailyRollingFileAppender 选项(每天产生一个日志文件,可以指定时间)

      		Threshold=WARN			指定日志消息的输出最低层次。
       		ImmediateFlush=true		默认值是true,意谓着所有的消息都会被立即输出。
       		
       		File=mylog.txt			指定消息输出到mylog.txt文件。
       								eg:      								
		       								File=mylog.txt 
		       										在classpath路径下自动成成mylog.txt文件。
		       								
		       								File=../../mylog.txt 
		       										在classpath路径返回上一层输出日志到mylog.txt文件。

			Append=false			默认值是true,即将消息增加到指定文件中,false指将消息
       		             			覆盖指定的文件内容。
       		             
      		DatePattern='.'yyyy-ww  每周滚动一次文件,即每周产生一个新的文件。
      		                        当然也可以指定按月、周、天、时和分。即对应
      		                        的格式如下:
      		                        
						                    1)'.'yyyy-MM: 每月
						                    2)'.'yyyy-ww: 每周 
						                    3)'.'yyyy-MM-dd: 每天
						                    4)'.'yyyy-MM-dd-a: 每天两次
						                    5)'.'yyyy-MM-dd-HH: 每小时
						                    6)'.'yyyy-MM-dd-HH-mm: 每分钟

例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.ImmediateFlush=true
		log4j.appender.A1.Append=false

D. RollingFileAppender 选项(文件大小到达指定尺寸的时候产生一个新的文件)
                   
           	Threshold=WARN			指定日志消息的输出最低层次。
            ImmediateFlush=true		默认值是true,意谓着所有的消息都会被立即输出。
            File=mylog.log			指定消息输出到mylog.txt文件。
           
            Append=false			默认值是true,即将消息增加到指定文件中,
            						false指将消息覆盖指定的文件内容。
           
            MaxFileSize=100KB		后缀可以是KB, MB 或者是 GB. 在日志文件到达
            						该大小时,将会自动滚动,即将原来的内容移到
            						mylog.log.1文件。
            						
            MaxBackupIndex=2:		指定可以产生的滚动文件的最大数。

例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.RollingFileAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.ImmediateFlush=true
		log4j.appender.A1.Append=false

3.3 配置layout组件(指定日志格式)

在这里插入图片描述

		log4j.appender.appenderName.layout=layoutClass

6

		
		+++ appenderName
					在设置Log4J组件级别的时候设置的名称,两个名称一致。
		
		
		+++ layoutClass
					指定layout组件的核心类,该核心类由Log4j组件提供。
					
					Log4J工具自动加载配置文件,然后根据配置文件指定的类的全路径,
					来反射创建对象。
					这样做的目的就是配置文件相当于一个Bean工厂,实现解耦。

					layoutClass:
    						 1.org.apache.log4j.HTMLLayout
    						 				以HTML表格形式布局
         					 
         					 2.org.apache.log4j.PatternLayout
         					 				可以灵活地指定布局模式
         					 				
							 3.org.apache.log4j.SimpleLayout(无参)
							 				包含日志信息的级别和信息字符串
        					 4.org.apache.log4j.TTCCLayout(无参)
         									包含日志产生的时间、线程、类别等等信息)
		
A. HTMLLayout项(以HTML表格形式布局)
			LocationInfo=true	默认值是false,输出java文件名称和行号
            Title=my app file:	默认值是 Log4J Log Messages.

例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.ConsoleAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.ImmediateFlush=true
		log4j.appender.A1.Target=System.err

		## 配置layout组件
		log4j.appender.A1.layout=org.apache.log4j.HTMLLayout
		log4j.appender.A1.layout.LocationInfo=true
		log4j.appender.A1.layout.Title=my app file:
B. PatternLayout项(可以灵活的布局)
			 
			 ConversionPattern=%m%n 		指定怎样格式化指定的消息。
     
     		 日志信息格式中几个符号所代表的含义:
   					-X号: X信息输出时左对齐;
         				%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
				        %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:  %d{yyy MMM dd HH:mm:ss,SSS},输出类似:20021018221028921
				        %r: 输出自应用启动到输出该log信息耗费的毫秒数
				        %c: 输出日志信息所属的类目,通常就是所在类的全名
				        %t: 输出产生该日志事件的线程名
				        %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程, 以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
				        %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
				        %%: 输出一个"%"字符
				        %F: 输出日志消息产生时所在的文件名称
				        %L: 输出代码中的行号
				        %m: 输出代码中指定的消息,产生的日志具体信息
				        %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
				        %M  代表方法的名字
				         		可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
				        		 
				        		 	1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于202)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
				          			3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
				          			 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。		


		 例子:		
				log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n



例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.ConsoleAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.ImmediateFlush=true
		log4j.appender.A1.Target=System.err

		## 配置layout组件
		log4j.appender.A1.layout=org.apache.log4j.PatternLayout
		log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

c. SimpleLayout项(仅仅包含日志信息的级别和信息字符串–无参)

例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.ConsoleAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.ImmediateFlush=true
		log4j.appender.A1.Target=System.err

		## 配置layout组件
		log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

d. TTCCLayout项(仅仅包含日志产生的时间、线程、类别等等信息–无参)

例子:

		## 配置Log4j组件
		log4j.rootLogger=error, A1
		
		## 配置appender组件
		log4j.appender.A1=org.apache.log4j.ConsoleAppender
		log4j.appender.A1.Threshold=WARN
		log4j.appender.A1.ImmediateFlush=true
		log4j.appender.A1.Target=System.err

		## 配置layout组件
		log4j.appender.A1.layout=org.apache.log4j.TTCCLayout

3.4 log4j.properties 配置模板

	## 配置log4j组件
	log4j.rootLogger=error, apperendName,apperendName2
	
	##--------------------------------------配置appender1(设置输出的位置1)
	## 配置apperend组件
	log4j.apperend.apperendName=apperendClass
	log4j.apperend.apperendName.属性1=1
	log4j.apperend.apperendName.属性2=2

	## 配置layout组件
	log4j.apperend.apperendName.layout=layoutClass

	##--------------------------------------配置appender2(设置输出的位置2)
	## 配置apperend组件
	log4j.apperend.apperendName2=apperendClass
	log4j.apperend.apperendName2.属性1=1
	log4j.apperend.apperendName2.属性2=2

	## 配置layout组件
	log4j.apperend.apperendName2.layout=layoutClass

3.5 log4j.properties 配置日志文件的输出位置问题

3.5.1 输出日志到文件的log4j.properties 配置案例
#1.设置Logger组件
log4j.rootLogger=info, console,file,A1


#3.设置Appender组件3---每天产生一个日志文件,可以指定时间
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender


## 在tomcat目录下产生日志文件
log4j.appender.A1.File=../../logs/demolog.txt

#####	设置布局类:org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

#####	设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.A1.layout.ConversionPattern=%d %p %c.%M() - %m%n

3.5.2 分析
	
	log4j.appender.A1.File=demolog.txt
	
	该配置生成的日志文件默认在java命令运行的目录。
	
	+++ 在java项目中,java命令运行的目录在java项目的根目录,即Demo的根目录。
					 所以日志文件在Demo/demolog.txt
					 
	+++ 在web项目中,java命令运行的目录分情况而定。
						1.%tomcat%/bin目录。  即tomcat命令运行的目录。
							  所以日志文件会在%tomcat%/bin/demolog.txt。
						
						2.在eclipse的根目录,即eclipse的安装目录。
								所以日志文件会在%eclipse%/demolog.txt.
						
						【上述两个目录,视运行环境而定,具体的我也不知道怎么回事。						
						  在我运行的环境中,出现的效果是第二种。
						  在视频中,老师演示的效果是第一种。
						  具体怎么配置,我也不知啊。
						】
						

四、Log4J工具相关API

4.1 Log 接口
	
	+++ 日志级别:
				FATAL(致命的)ERROR(错误)WARN(警告)INFO(信息)DEBUG(调试)TRACE(细节)。
	其中FATAL级别最高,TRACE级别最低。通用日志包采用日志级别机制,可以灵活
	的控制输出的日志内容。

				TRACE< DEBUG < INFO <WARN <ERROR <FATAL
				
	+++ 相关方法
				Log log=LogFactory.getLog(App.class);			
				log.fatal(Object message): 输出FATAL级别的日志消息。
				log.error(Object message): 输出ERROR级别的日志消息。
				……
				log.trace(Object message): 输出TRACE级别的日志消息。
	
			   
			    只有当它输出日志的级别大于或等于为日志其配置的日志级别时,
			    这个方法才会被真正执行。
			    例如,如果日志器的日志级别为WARN,那么在程序中,它的fatal()error()warn()方法会被执行,而info()debug()trace()
			          方法不会被执行。
    
4.2 LogFactory接口
		Log log=LogFactory.getLog(App.class)  //以App的类路径作为Log的名称
		
		Log log=LogFactory.getLog("我是log1")  //自定义Log的名称

五、案例

5.1 java项目
log4j.properties

将该文件放在java项目Demo/src/ log4j.properties 下。

#1.指定logger
## 		设定Log4j的日志级别(error warn info  debug)
## 		输出目的地(Console, logfile是appender的名字,是自己定义的,后面才赋予具体的含义)
log4j.rootLogger=error, Console, logfile, A1


###################################################################################################################

#2.输出内容到控制台
#	1.设置核心类:org.apache.log4j.ConsoleAppender 表明 Console是控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender


#	2.设置布局类:org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
log4j.appender.Console.layout=org.apache.log4j.PatternLayout

#   3.设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.Console.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################

#3.输出内容到文件,	文件大小到达指定尺寸的时候产生一个新的文件
#   1.设置核心类:org.apache.log4j.RollingFileAppender
log4j.appender.logfile=org.apache.log4j.RollingFileAppender

#	     设定文件的输出路径(指定文件的名字和路径,tomcat的启动路径)
log4j.appender.logfile.File=logstrore.log

#	     设定后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logstrore.log.1文件
log4j.appender.logfile.MaxFileSize=2048KB

#	   Keep three backup files.指定可以产生的滚动文件的最大数
log4j.appender.logfile.MaxBackupIndex=4

#	2.设置布局类:org.apache.log4j.PatternLayout
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

#   3.设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.logfile.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################

#3.输出内容到文件,	文件大小到达指定尺寸的时候产生一个新的文件【只能把日志输出一个文件,不推荐】
#   1.设置appender核心类:org.apache.log4j.FileAppender
log4j.appender.A1=org.apache.log4j.FileAppender

log4j.appender.A1.file=my.txt

#   2.设置appender核心类的layout布局le
log4j.appender.A1.layout=org.apache.log4j.TTCCLayout


App.java
public class Demo {
	public static void main(String[] args) {
		 	
		Log log=LogFactory.getLog(Demo.class);
		
		log.debug("debug-msg");
		log.info("info-msg");
		log.warn("warn-msg");
		log.error("error-msg");
		
		
	}
}

5.2 web项目
log4j.properties

将该文件放在web项目Demo/src/ og4j.properties 下。

#1.设置Logger组件
log4j.rootLogger=info, console,file,A1


###################################################################################################################

#2.设置Appender组件1---输出内容到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender

#####	设置布局类:org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
log4j.appender.console.layout=org.apache.log4j.PatternLayout

#####	设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.console.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################

#3.设置Appender组件2---输出内容到文件
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.Threshold=WARN
log4j.appender.file.Append=false

## 在classpath路径下生成日志文件,即demo/web-inf/classes/
log4j.appender.file.File=weblog.txt

#####	设置布局类:org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
log4j.appender.file.layout=org.apache.log4j.PatternLayout

#####	设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.file.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################

#3.设置Appender组件3---每天产生一个日志文件,可以指定时间
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender


## 在tomcat目录下产生日志文件
log4j.appender.A1.File=../../logs/demolog.txt

#####	设置布局类:org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

#####	设置布局类的输出格式:ConversionPattern=%m%n :指定怎样格式化指定的消息
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.A1.layout.ConversionPattern=%d %p %c.%M() - %m%n


HelloController.java
public class HelloController extends HttpServlet {
	
	Log log=LogFactory.getLog(HelloController.class);
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		log.info("info-msg");
		
		log.error("error-msg");
	}
}

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  
  
  <servlet>
    <servlet-name>list</servlet-name>
    <servlet-class>org.jsoft.demo.HelloController</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>list</servlet-name>
    <url-pattern>/list</url-pattern>
  </servlet-mapping>
  
    
  <servlet>
    <servlet-name>Register</servlet-name>
    <servlet-class>org.jsoft.demo.RegisterServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>

 
</web-app>
启动服务器
	访问服务器,查看产生的日志

六、log4j生成有日期的日志文件名


用log4j生成日志,担心天长日久如果生成到一个文件里面有很大,考虑每天都生成当天的日志文件,文件名有当天的日期。

解决方法很简单:

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.file.File=hibernate.log
log4j.appender.file.File=../webapps/bjjjpcDemo/logs/log_
log4j.appender.file.DatePattern=yyyy-MM-dd'.html'
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

 

但是在测试的时候怎么也出不来想要的类似“log_20090625.html”这样的日志文件,老是只有一个"log_"的文件,经过上网查资料才搞清楚,25日(今天)生成的日志是以 ”log_“的形式存储的,当到26日(明天)的时候是把25日生成的log_文件加入25日的日期(log_20090625.html)保存起来,然后在创建一个26日的log_文件,依次类推。

所以在测试的时候需要修改系统时间才能看到生成的日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值