【问题标题】:Grails Audit Logging Plugin - PerformanceGrails 审计日志插件 - 性能
【发布时间】:2013-02-21 09:05:23
【问题描述】:

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

有谁知道实际的日志记录(将日志保存到数据库)是在单独的线程中执行,还是仅在日志记录完成后才会返回对请求的响应(例如,顺便修改了一些记录)。在他们的文档或外部的任何地方都找不到关于此的任何内容。

【问题讨论】:

    标签: performance grails logging grails-orm


    【解决方案1】:

    此插件使用internally 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]
       }
    }
    

    【讨论】:

    • 非常感谢您的分析和示例。现在这意味着,我可能需要推出自己的。因为我不需要记录确切的更改,所以我应该能够推出不会阻塞的东西。
    • 不客气。如果我是你,我会考虑为此目的使用 log4j(AsynchAppender 应该可以解决问题)。这可能会为您节省一些时间。
    猜你喜欢
    • 2012-10-01
    • 2012-03-27
    • 1970-01-01
    • 2013-07-09
    • 2011-02-21
    • 2014-06-21
    • 1970-01-01
    • 2023-02-08
    • 2015-11-26
    相关资源
    最近更新 更多