【问题标题】:Why are there so many Rails loggers, and why are there locks on them?为什么有这么多 Rails 记录器,为什么会有锁?
【发布时间】:2013-02-09 09:37:34
【问题描述】:

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

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

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

有两件事我不清楚:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 2019-12-27
      • 2017-01-01
      相关资源
      最近更新 更多