6

我正在使用 Ruby 和 Eventmachine 库编写一个应用程序。我真的很喜欢非阻塞 I/O 和事件驱动系统的想法,我遇到的问题是日志记录。我正在使用 Ruby 的标准记录器库。这并不是说日志记录需要永远,但它似乎是不应该阻塞的东西,它确实如此。是否有某个库可以将 Ruby 的标准记录器实现扩展为非阻塞,或者我应该为我的记录调用调用 EM::defer?有没有办法让 eventmachine 为我做这件事?

4

2 回答 2

3

我最终将记录器包装在一个单例类中,该类启动一个线程并具有一个 FIFO 队列。日志记录会将日志信息转储到队列中,并且线程只是循环,将内容从队列中拉出并使用真正的记录器来记录它。不是真正的反应器模式,但它也不会破坏我的 EM 线程池。

有了这个单例,你只能拥有一个记录器,但这是我在github上所做的。

于 2010-11-18T19:24:33.080 回答
1

如果您在使用 Syslog 的系统上,您可以查看EM-Syslog

于 2010-11-14T04:06:31.280 回答