Ruby用の統一ロギングシステムはありますか?
-
10-10-2019 - |
質問
Railsをサポートできる真に統一されたロギングシステムがあるのではないかと思っていました と ジョブが遅れ、セットアップが比較的簡単です。
現在、Railsコンテキストにいない場合でも、アプリケーションの実行コンテキスト(Rails、Delayed Jobsなど)について、同じサーバー/ファイルにログインできるようにしたいと考えています。
Rails Loggerが大好きですが、Resqueの仕事中にログにログインできません。何か案は?
解決
Syslogに似たファイルロガーのことですか?
ルビーは両方を持っています Logger
と Syslog
.
Loggerはログローリングを行い、重大度レベルを処理し、ロギング用の多くのRubyモジュールで使用できます。ファイルの名前を定義して、stdout/stderrまたはioストリームを使用するか、使用できます。
Syslogのドキュメントはかなり裸の骨ですが、ソースコードを閲覧するか、 Ruby syslog readme.
他のヒント
私は、レストランのジョブによって実行される宝石で起こっていることを記録する必要があります。 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でログをフィルタリングするため、関連するデータのみが記録されます。
所属していません StackOverflow