【发布时间】:2013-02-21 09:05:23
【问题描述】:
我正在使用Grails Audit Logging Plugin 在我的 grails 应用程序上记录创建/编辑/删除操作。
有谁知道实际的日志记录(将日志保存到数据库)是在单独的线程中执行,还是仅在日志记录完成后才会返回对请求的响应(例如,顺便修改了一些记录)。在他们的文档或外部的任何地方都找不到关于此的任何内容。
【问题讨论】:
标签: performance grails logging grails-orm
我正在使用Grails Audit Logging Plugin 在我的 grails 应用程序上记录创建/编辑/删除操作。
有谁知道实际的日志记录(将日志保存到数据库)是在单独的线程中执行,还是仅在日志记录完成后才会返回对请求的响应(例如,顺便修改了一些记录)。在他们的文档或外部的任何地方都找不到关于此的任何内容。
【问题讨论】:
标签: performance grails logging grails-orm
此插件使用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]
}
}
【讨论】: