在web中使用log4j
来源:互联网 发布:阿里云价格计算 编辑:程序博客网 时间:2024/05/21 05:05
一、将log4j-1.2.13.jar、commons-logging-1.1.1.jar 放入web-inf/lib下
二、在web.xml中配置如下配置片断:
<span style="font-family:SimSun;font-size:14px;"><context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/log4j.properties</param-value></context-param><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener></span>
三、log4j详解
1、定义配置文件
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件log4j.properties(键=值)。下面将介绍使用log4j.properties文件作为配置文件的方法:①、配置根Logger
Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF:关 闭所有的日志输出。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
②、配置日志信息输出目的地 Appender
Appender 负责控制日志记录操作的输出。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.classlog4j.appender.appenderName.option1 = value1…log4j.appender.appenderName.optionN = valueN
这里的appenderName为在①里定义的,可任意起名。
其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件。org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义一个名为stdout的输出目的地,ConsoleAppender为控制台。
③、配置日志信息的格式(布局)Layout
Layout 负责格式化Appender的输出。
其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
其中,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
2、格式化日志信息
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
%L 输出行号
以下面配置文件为例:
# INFO是level;sfu,console是自定义的两个输出目的地。log4j.rootLogger = INFO,sfu,console#log4j.category是对自定义类的设置,可以对类、包和工程单独设置log4j.category.com.test.demo= INFO,sfu,console#log4j.additivity是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下 子Logger 会继承 父Logger #的appender,也就是说 子Logger 会在 父Logger 的appender里输出。若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。 (如下面包com.test.demo中的代码输出日志只会在定义的输出‘sfu’,’console’中输出)log4j.additivity.com.test.demo = false# 定义console输出为控制台输出log4j.appender.console = org.apache.log4j.ConsoleAppender## 输出INFO级别以上的日志log4j.appender.console.Threshold = INFO#配置日志信息的格式log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)log4j.appender.console.layout = org.apache.log4j.PatternLayout# %d{HH:mm:ss}输出日期 格式为[时:分:秒] ; [%t]输出线程名;%p输出优先级;%c输出包.类名;%L输出行号;%m 输出代码中指定的消息;%n换行log4j.appender.console.layout.ConversionPattern = %d{HH:mm:ss} [%t] %p: %c:%L - %m%n # sfu定义为输出到日志文件log4j.appender.sfu = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.sfu.Threshold = INFOlog4j.appender.sfu.file = ${project}/logs/sfu.loglog4j.appender.sfu.datePattern = '.'yyyy-MM-ddlog4j.appender.sfu.layout = org.apache.log4j.PatternLayoutlog4j.appender.sfu.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %5p %c:%L - %m%nlog4j.appender.sfu.append = true
其中log4j.appender.sfu.file = ${project}/logs/sfu.log是输出日志到当前工程的相对路径。
需要在web.xml中定义
<context-param><param-name>webAppRootKey</param-name><param-value>project</param-value></context-param>
定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。
然后log4j的配置文件里就可以用${project}来表示Web目录的绝对路径,把log文件存放于webapp中。
三、在代码中使用Log4j
我们在需要输出日志信息的类中做如下的三个工作://1、导入所有需的commongs-logging类:import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;//2、在自己的类中定义一个org.apache.commons.logging.Log类的私有静态类成员:private final Log log = LogFactory.getLog(getClass());LogFactory.getLog()方法的参数使用的是当前类的class。//3、使用org.apache.commons.logging.Log类的成员方法输出日志信息:if (log.isDebugEnabled()){log.debug("111");}if (log.isInfoEnabled()){log.info("222");}if (log.isWarnEnabled()){log.warn("333");}if (log.isErrorEnabled()){log.error("444");}if (log.isFatalEnabled()){log.fatal("555")}
- 在web中使用log4j
- log4j 如何在Java web中使用
- log4j日志在web项目中使用
- 在web应用中使用Log4j 2
- Log4j在Web中
- 在web应用中使用日志工具log4J
- 在WEB项目中使用log4j日志管理
- 在WEB项目中使用log4j日志管理
- 初步配置log4j(在java web中使用)
- log4j在web中的使用
- web 项目中 在spring中使用log4j 定时刷新log4j配置文件
- java web中使用log4j
- Web 项目中使用Log4j
- 在 JBuilder 中使用 Log4j
- 在eclipse中使用log4j
- 在应用程序中使用log4j
- 在javaweb中使用log4j
- 在Liferay中使用Log4j
- 开启调错之旅
- js 操作select和option
- 正确开启windows2008系统的远程桌面功能
- 个人作业
- 第四周项目一三角形类--带参数构造函数
- 在web中使用log4j
- HDU 5194 DZY Loves Balls(数学组合or各种乱搞)
- 枚举类
- 循环-09. 支票面额(15)
- 二进制的一些小问题
- 银行业务调度系统
- 009:了不起的分支和循环3
- 第四周项目一:三角形类的构造函数(3)
- 第四周 阅读程序 2