zoukankan      html  css  js  c++  java
  • 使用拦截器实现审计日志

    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 - 删除数据

  • 相关阅读:
    web前端开发面试被虐篇(一)
    JSON字符串 拼接与解析
    IntelliJ IDEA 2017 Dubbo Elastic-job Redis Zookeeper RabbitMQ FastDFS MyCat 简介以及部分实现(三)
    IntelliJ IDEA 2017 MySQL5 绿色版 Spring 4 Mybatis 3 配置步骤详解(二)
    IntelliJ IDEA 2017 JDK Tomcat Maven 配置步骤详解(一)
    简单练习
    C#实现上传/下载Excel文档
    javascript练习题
    转 浏览器滚动条以及常用样式汇总
    深入基础(五)工具模块,常用模块(2)
  • 原文地址:https://www.cnblogs.com/hongten/p/2108373.html
Copyright © 2011-2022 走看看