1
我正在使用Grails Audit Logging Plugin在我的grails應用程序上記錄創建/編輯/刪除操作。Grails審計日誌記錄插件 - 性能
有沒有人知道實際的日誌記錄(保存日誌到數據庫)是在一個單獨的線程中執行,還是隻會在日誌記錄完成後返回請求的響應(偶然修改一些記錄)。無法在文檔或外部的任何位置找到任何內容。
我正在使用Grails Audit Logging Plugin在我的grails應用程序上記錄創建/編輯/刪除操作。Grails審計日誌記錄插件 - 性能
有沒有人知道實際的日誌記錄(保存日誌到數據庫)是在一個單獨的線程中執行,還是隻會在日誌記錄完成後返回請求的響應(偶然修改一些記錄)。無法在文檔或外部的任何位置找到任何內容。
該插件使用Hibernate Event Systeminternally。消息以阻塞的方式處理,因此在日誌記錄完成後,將收到響應。
這是很容易複製 - 只需創建一個自定義休眠聽衆:
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]
}
}
非常感謝您的分析和實例。現在這意味着,我可能需要推出自己的。由於我不需要記錄確切的變化,我應該能夠推出一些不會阻止的事情。 – techfoobar 2013-02-26 15:40:01
不客氣。如果我是你,我會考慮使用log4j來達到這個目的(AsynchAppender應該這樣做)。這可能會爲你節省一些時間。 – 2013-02-26 16:01:06