2011-06-17 104 views
2

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

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

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

而且我的lib /守护/ 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文件以外的任何其他那些没有得到任何输出。关于如何获得这个甚至输出一些日志记录的任何想法?

回答

1

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

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

1

我刚刚有同样的问题记录器没有被默认在生产冲洗

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

Rails.logger.auto_flushing = true 

如果您使用了守护进程生成器,您可能会发现该行默认添加,并在某个时刻删除它:o)