人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Ruby on Rails (2.0.2)のloggerについて教えてください。
下記のようなクラスを書いてRAILS_ROOT/libとかに置いて、script/runnerでバッチ処理として起動しているのですが、
development環境ではlog/development.logにきちんと出力されます。
ですが、Production環境(script/runnner -e production)で実行してもlog/production.logに出力されません。
config/environment.rbやconfig/environments以下はデフォルトの設定のままです。
何故ログが出ないのでしょうか?
もしくはそもそもloggerの使い方が間違っているのでしょうか?


class Batch
cattr_accessor :logger #ActiveSupportのクラス変数のアクセサを定義するヘルパ
self.logger ||= RAILS_DEFAULT_LOGGER

def self.some_class
logger.info "Some Message"
end
end


●質問者: tak-n
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:2.0 ActiveSupport Class config def
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● znz
●60ポイント

使い方は間違っていなくて、RAILS_DEFAULT_LOGGERがActiveSupport::BufferedLoggerでauto_flushing=1000になっていて1000回ログ出力用のメソッドが呼ばれるまでバッファリングされているからのようです。

development環境の時はauto_flushing=1なので毎回すぐにログに出ているようです。

すぐにログに出てほしいのならauto_flushingの数を小さくするとかflushメソッドを呼ぶなどすればよいのではないでしょうか。

◎質問者からの返答

ありがとうございます。

Flushという概念がよく分かっていませんが、

バッチ処理の結果をログに出力するというのはよくあるニーズな気がしますので、何か別の方法を考えたほうがいいんですかね・・。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ