Grails Audit Logging插件 - 性能

时间:2013-02-21 09:05:23

标签: performance grails logging gorm

我正在使用Grails Audit Logging Plugin在我的grails应用上记录创建/编辑/删除操作。

有没有人知道实际的日志记录(将日志保存到数据库)是在一个单独的线程中执行,还是只有在完成日志记录后才会返回请求的响应(顺便修改一些记录)。在他们的文档或外面的任何地方找不到任何内容。

1 个答案:

答案 0 :(得分:2)

此插件使用Hibernate Event System internally。邮件以阻止方式处理,因此在完成日志记录后>将收到响应。

重现起来非常简单 - 只需创建一个自定义的Hibernate监听器:

import org.hibernate.event.PostInsertEvent;
import org.hibernate.event.PostInsertEventListener;
import org.hibernate.event.PostUpdateEvent;
import org.hibernate.event.PostUpdateEventListener;

class HibernateDummyListener implements PostInsertEventListener, PostUpdateEventListener {

    public void onPostInsert(final PostInsertEvent event) {
        println "Hibernate: ON POST INSERT"

        //No delay
    }

    public void onPostUpdate(final PostUpdateEvent event) {
        println "Hibernate: ON POST UPDATE"

        Thread.sleep(10000)
    }
}

...和resources.groovy:

beans = {
   hibernateDummyListener(HibernateDummyListener)

   hibernateEventListeners(HibernateEventListeners) {
      listenerMap = ['post-insert':hibernateDummyListener,
                     'post-update':hibernateDummyListener]
   }
}