Rails守护程序不输出任何日志信息

时间:2011-06-17 13:37:45

标签: ruby-on-rails-3 daemon

我的Rails应用程序中有一个自定义守护程序。它非常简单(在DB中查找“预定”作业并“运行”它们)。这在开发和测试环境中非常有用,但是,守护进程当然拒绝开始生产。更糟糕的是,我似乎无法让它生成任何日志输出,所以我不确定出了什么问题。

实际上,即使在开发环境中,守护进程也不会生成任何日志输出。这是我的config / daemons.yml:

dir_mode: script
dir: ../../log
multiple: true
backtrace: true
monitor: true
log_output: true

我的lib / daemon / xyz_ctl:

#!/usr/local/bin/ruby
require 'rubygems'
require "daemons"
require 'yaml'
require 'erb'
require 'active_support'

options = YAML::load(
  ERB.new(
  IO.read(
  File.dirname(__FILE__) + "/../../config/daemons.yml"
  )).result)
options["dir_mode"] = options["dir_mode"].to_sym

Daemons.run File.dirname(__FILE__) + '/xyz.rb', options

日志目录没有.log文件以外的任何内容,并且没有任何输出。关于如何让它甚至输出一些日志记录的任何想法?

2 个答案:

答案 0 :(得分:1)

我仍然无法让日志记录工作,但我确实让守护进程开始生产。在生产环境中,我同时拥有actionmailer,actionpack,activemodel,activerecord,activeresource和activesupport的v3.0.7和v3.0.8。我的开发虚拟机只有3.0.7 ..卸载3.0.8的帮助。但是对话沉默仍然困扰着我:(

更新:使用守护进程中的logger在开发模式下工作(使用信息级别)但不在生产中(我怀疑是因为生产环境默认情况下没有记录信息级别消息?我还没有测试过)。关闭现在这个:\

答案 1 :(得分:1)

我刚遇到同样的问题。生产中默认情况下记录器没有刷新。

尝试将以下内容添加到lib / daemons / xyz.rb中 - 在您需要时初始化Rails应用程序之后,或者在while循环中:

Rails.logger.auto_flushing = true

如果您使用了守护程序生成器,您可能会发现默认情况下会添加该行,并且您在某些时候将其删除:o)