为什么有这么多Rails记录器,为什么会有锁?

时间:2013-02-23 22:59:44

标签: ruby-on-rails ruby-on-rails-3 daemon

我一直在努力运行可以访问rails环境的Daemon。通过搜索一下,我发现在这样做时我需要处理两件事:

  1. 重新初始化与Rails数据库的连接
  2. 重新初始化rails记录器
  3. 我理解需要重新初始化与数据库的连接,而不是记录器。我看到this code的目的是让Rails运行一个Daemon更容易一些。它为以下各项创建新的BufferedLogger实例:RailsActiveRecord::BaseActionController::BaseActionMailer::Base

    我不清楚两件事:

    1. 为什么有四种不同的记录器?如果我从控制器内的代码和模型中的代码调用logger.info,是不是使用相同的rails logger?
    2. 为什么必须在守护进程中重新初始化记录器?如果不是,我注意到记录器拒绝记录,说有锁。但为什么呢?
    3. 我发现有一件事是有很多人很难理解Rails记录器。如果有一些博客文章已经涵盖了这个主题,请告诉我!

1 个答案:

答案 0 :(得分:1)

我认为在Rails 3中引入了4个记录器。其背后的想法是每个组件(ActiveRecord,ActionPack,ActionMailer)并不真正相互依赖,应该可以单独使用它们。因此,他们每个人都有自己的记录器对象。我认为它在railties gem中所有这4个记录器基本上都设置为相同的实例,因此在任何一个上调用logger.info都意味着相同的结果。但是理论上你可以将ActiveRecord记录器设置为其他东西,例如。

至于为什么伐木工需要重新初始化,我不知道......