ruby - 如何使用 Ruby 和 eventmachine 登录?

标签 ruby logging eventmachine

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

最佳答案

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

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

关于ruby - 如何使用 Ruby 和 eventmachine 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4156281/

相关文章:

ios - Rubymotion:Rake 失败

logging - hashcorp consul 的日志文件在哪里?

java - 减少项目中日志库的数量

php - 管理大型日志文件

ruby-on-rails - 测试 ActiveRecord::RecordNotFound

ruby - 有没有与Ruby-land的Bundler等人等效的Haskell-land。 al,如果没有,那么如何设计一个结构如此的项目?

ruby - 使用 EM-HTTP 消费队列 : unable to create new socket: Too many open files

ruby-on-rails - 如何使用Auth0连接postgres数据库

ruby - 为什么 Sinatra 请求需要 EM 线程?