JR 精品文章 - struts中自定义格式log4j记录用户对记录实体的操作
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » J2EE综合 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
struts中自定义格式log4j记录用户对记录实体的操作
jellcy 原创   更新:2007-11-20 15:04:30  版本: 1.0   

近日小弟因工作需要,对log4j进行学习并用之在工作之中.主要是用log4j记录用户对数据库中的记录实体操作历史.以便满足客户跟踪与查找记录的操作历史.

需要最小架包:
   log4j-1.2.8.jar;(把架包放到工程lib目录下)

Java特性文件(.properties)的配置:

log4j.rootLogger = FATAL,protron

***说明:
  这里是设置log4j根Logger,主要功能:实现对日志的输出级别设定[五大级别由高到
低:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL],输出规则:优于或等同级别可输出.Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF:关 闭所有的日志输出。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。这里用到FATAL级别,主要是用程序进行时其它很多的DEBUG、ERROR、WARN、INFO的信息进行屏蔽,因为对于用户来说,这里是他们无法理解的.

log4j.appender.protron=org.apache.log4j.DailyRollingFileAppender
log4j.appender.protron.layout=com.buss.log4j.FORMATHTMLLayout
log4j.appender.protron.layout.ConversionPattern=[%t] %C.%M(%L)

***说明:
 这里是配置日志信息输出目的地Appender.而Appender负责控制日志记录操作的输出一切事务.其中,Log4j提供的appender有以下几种:
 org.apache.log4j.ConsoleAppender(控制台),

 org.apache.log4j.FileAppender(文件),

 org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

 org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过org.log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件。

 而layout负责日志输出的格式.其中,Log4j提供的layout有以下几种:

 org.apache.log4j.HTMLLayout(以HTML表格形式布局),

 org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

 org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

 org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

 在这里,我对原有的log4j的HTMLLayout类进行了修改,以达到格式自定义的目的.

 ConversionPattern主要是格式化输开形式,Log4J采用类似C语言中的printf函数的打印 格式格式化日志信息,打印参数如下:

 %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 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

 在事务处理bean中使用log4j,当用户对实体记录进行修改时,只记录用户所修改的实体属性.实现方法:利用用户session取得用户信息,用户对记录进行修改,修改前与修改后的实体记录比较,找出所修改的实体属性,进行记录.在代码中输出是一定要用与FATAL输出级别相当的方法,不然没法输出信息.

在代码中使用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.isFatalEnabled())

{

  log.fatal(//用户所作的修改实体记录属性)


  
log4j不但可以作为程序员的调试工具,也可以作为用户跟踪操作记录历史的利器.而格式也可以由程序员自个定义.可以对HTMLLayout,PatternLayout,SimpleLayout,TTCCLayout这几类作修改再加载到工程中就可以实现了.


版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     14       0
作者其它文章:
作者全部文章
评论人:blue__jsky 发表时间: Wed Feb 13 14:10:54 CST 2008
[good][good]

这个文章共有 1 条评论
主题: Struts2 自定义验证器 上一篇文章
返回文章列表 返回〔J2EE综合〕
下一篇文章 主题: 初学者如何开发出一个高质量的J2EE系统


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号