2010-11-11 98 views
6

我正在使用Ruby和Eventmachine庫編寫應用程序。我非常喜歡非阻塞I/O和事件驅動系統的想法,我遇到的問題是日誌記錄。我使用Ruby的標準記錄器庫。它不是記錄需要永遠,但它似乎是不應該阻止和它的確如此。在那裏有一個庫,它將Ruby的標準記錄器實現擴展爲非阻塞,或者我應該爲我的日誌記錄調用調用EM :: defer?有沒有一種方法可以讓事件機器爲我做到這一點?如何使用Ruby和eventmachine進行日誌記錄?

+0

您是否嘗試將日誌記錄委派給新線程? – AndrewKS 2010-11-12 17:18:24

+0

這就是EM :: defer會允許我做的,但我正在尋找一種方法來避免它。 – Justin 2010-11-13 11:49:14

回答

3

我結束了包裹在一個單類,啓動一個線程,有一個FIFO隊列記錄器。日誌記錄會將日誌信息轉儲到隊列中,並且線程剛剛循環,從隊列中抽出東西並使用實際記錄器記錄它。不是真正的反應堆模式,但它不會咀嚼我的EM線程池。

有了這個單例,你只能有一個記錄器,但這裏是我在github上做的。

+0

你能分享一些代碼嗎? – 2011-06-23 11:55:32

+1

鏈接到我在github上所做的。你讓我去開源! =) – Justin 2011-06-23 13:44:43

+0

有沒有派生線程的日誌記錄寶石,而是使用回調本機異步處理? – 2013-07-08 18:43:38

1

如果你有系統日誌的系統上,你可以看看EM-Syslog

相關問題