1

我一直在运行一个可以访问 rails 环境的守护进程。通过搜索,我发现这样做时需要处理两件事:

  1. 重新初始化到 Rails 数据库的连接
  2. 重新初始化 Rails 记录器

我了解需要重新初始化与数据库的连接,但不需要重新初始化记录器。我看到了这段代码,它旨在使使用 Rails 运行守护程序更容易一些。它为以下每个创建新的 BufferedLogger 实例:Rails, ActiveRecord::Base, ActionController::Base,ActionMailer::Base

有两件事我不清楚:

  1. 为什么有四种不同的记录器?如果我logger.info从控制器中的代码与模型中的代码调用,是不是使用相同的 Rails 记录器?
  2. 为什么必须在守护进程中重新初始化记录器?如果不是,我注意到记录器拒绝记录,说有锁。但为什么?

我发现的一件事是,有很多人很难理解 Rails 记录器。如果已经有一些博客文章涵盖了这个主题,请告诉我!

4

1 回答 1

1

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

至于为什么需要重新初始化记录器,我不知道......

于 2013-02-24T00:27:35.423 回答