我正在使用Grails Audit日志记录插件记录我的Grails应用程序上的创建/编辑/删除操作。
是否有人知道实际的日志记录(将日志保存到DB)是在单独的线程中执行的,还是只有在日志记录完成后才会返回对请求的响应(顺便修改一些记录)。在他们的文档或外部找不到任何关于这方面的信息。
此插件内部使用Hibernate事件系统。消息是以阻塞的方式处理的,因此在日志记录完成后将收到响应。
它很容易复制-只需创建一个自定义的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)
}
}
和资源。groovy:
beans = {
hibernateDummyListener(HibernateDummyListener)
hibernateEventListeners(HibernateEventListeners) {
listenerMap = ['post-insert':hibernateDummyListener,
'post-update':hibernateDummyListener]
}
}