首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用拦截器实现审计日志

使用拦截器实现审计日志

作者头像
Hongten
发布2018-09-18 09:58:58
7750
发布2018-09-18 09:58:58
举报
文章被收录于专栏:HongtenHongten

LogEntityInterceptor .java

代码:

/**  *  */ package com.b510.examplex;

import java.io.Serializable;

import org.apache.log4j.Logger; import org.hibernate.EmptyInterceptor; import org.hibernate.type.Type;

/**  *  * @author XHW  *  * @date 2011-7-15  *  */ public class LogEntityInterceptor extends EmptyInterceptor {

 private static final long serialVersionUID = -3556584943170985808L;

 private final Logger logger = Logger.getLogger(LogEntityInterceptor.class);

 public void onDelete(Object entity, Serializable id, Object[] state,    String[] propertyNames, Type[] types) {   logger.info("删除数据");  }

 public boolean onFlushDirty(Object entity, Serializable id,    Object[] currentState, Object[] preState, String[] propertyNames,    Type[] types) {   logger.info("修改数据");   return false;  }

 public boolean onSave(Object entity, Serializable id, Object[] state,    String[] propertyNames, Type[] types) {   logger.info("保存数据");   return false;  }

}

log4j.propertices

代码:

log4j.logger.com.b510.examplex=info,appender1 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout log4j.appender.appender1.File=logfile.txt

HibernateTest.java

代码:

/**  *  */ package com.b510.examplex;

import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;

/**  *  * @author XHW  *  * @date 2011-7-15  *  */ public class HibernateTest {

 /**   * @param args   */  public static void main(String[] args) {   new HibernateTest().testInterceptor();  }

 public void testInterceptor(){   LogEntityInterceptor interceptor=new LogEntityInterceptor();   Configuration config=new Configuration();   config.setInterceptor(interceptor);   config.configure();   SessionFactory sf=config.buildSessionFactory();   Session session=sf.openSession();   Guestbook gb=new Guestbook();   gb.setName("HOngten");   gb.setContent("content: test interceptor");   gb.setCreatedTime(new java.util.Date());   gb.setEmail("hongtenzone@foxmail.com");   gb.setPhone("123456");   gb.setTitle("title:hello world");   session.beginTransaction();   session.save(gb);   session.getTransaction().commit();   session=sf.openSession();   gb.setName("hanyuan");   session.beginTransaction();   session.update(gb);   session.getTransaction().commit();   session=sf.openSession();   session.beginTransaction();   session.delete(gb);   session.getTransaction().commit();  } }

运行效果:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Hibernate:     select         max(id)     from         guestbook Hibernate:     insert     into         users.guestbook         (version, name, email, phone, title, content, created_time, id)     values         (?, ?, ?, ?, ?, ?, ?, ?) Hibernate:     update         users.guestbook     set         version=?,         name=?,         email=?,         phone=?,         title=?,         content=?,         created_time=?     where         id=?         and version=? Hibernate:     delete     from         users.guestbook     where         id=?         and version=?

并且在logfile.txt文件中有如下记录:

[main] INFO com.b510.examplex.LogEntityInterceptor - 保存数据 [main] INFO com.b510.examplex.LogEntityInterceptor - 修改数据 [main] INFO com.b510.examplex.LogEntityInterceptor - 删除数据

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-07-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档