【问题标题】:How to log with Ruby and eventmachine?如何使用 Ruby 和 eventmachine 进行日志记录?
【发布时间】:2010-11-11 15:52:16
【问题描述】:

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

【问题讨论】:

  • 您是否尝试将日志记录委托给新线程?
  • EM::defer 允许我这样做,但我正在寻找一种方法来避免它。

标签: ruby logging eventmachine


【解决方案1】:

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

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

【讨论】:

  • 链接到我在 github 上发布的内容。你让我去开源! =)
  • 是否有一个日志 gem 不产生线程,而是使用带有回调的原生异步处理?
【解决方案2】:

如果您使用的是带有 Syslog 的系统,您可以查看 EM-Syslog

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多