一、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},输出类似:2002年10月18日 22:10:28,921
%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的名称小于20。
2)%-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_文件,依次类推。
所以在测试的时候需要修改系统时间才能看到生成的日志。