4

Railsと遅延ジョブをサポートでき、セットアップが比較的簡単な、真に統合されたロギングシステムがあるかどうか疑問に思いました。

現在Railsコンテキストにいない場合でも、アプリケーションの実行コンテキスト(Rails、遅延ジョブなど)について同じサーバー/ファイルにログを記録できるようにしたい。

Railsロガーが大好きですが、Resqueジョブ中にログに記録できません。何か案は?

4

2 に答える 2

6

syslogに似たファイルロガーを意味しますか?

Rubyにはとの両方がLoggerありSyslogます。

ロガーはログローリングを実行でき、重大度レベルを処理し、ログ記録のために多くのRubyモジュールで使用されます。ログに記録するファイルの名前を定義するか、STDOUT/STDERRまたはIOストリームを使用できます。

syslogのドキュメントはかなり必要最低限​​のものですが、ソースコードを参照するか、RubySyslogREADMEを読むことで情報を入手できます。

于 2010-11-16T07:13:15.223 に答える
2

resqueジョブによって実行されるgemで発生していることをログに記録する必要があります。Railsデータベースに何が起こっているかをログに記録するには、次のようにします。

#in gem:
class Foo
  def self.logger
    @@logger ||= Logger.new(nil)
  end

  def self.logger=(logger)
    @@logger = logger
  end

  def self.logger_reset
    self.logger = Logger.new(nil)
  end

  def self.logger_write(obj_id, message, method = :info)
    self.logger.send(method, "|%s|%s|" % [obj_id, message])
  end
end

#in rails in initializers
Foo.logger = MyRailsLogger.new

#in in rails in lib or in model if it uses ActiveRecord
class MyRailsLogger
  def info
    ...
  end

  ...
end

このようにして、さまざまなプロセスで発生していることをログに記録し、Fooインスタンスのobject_idでログをフィルタリングできるため、関連するデータのみがログに記録されます。

于 2011-01-13T20:53:53.793 に答える