2011-06-17 103 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)