現在、Rails (この時点では 3.2、dev ブランチでは 4.1 で実行されます) アプリをセットアップして、logrageおよびgelf-rb gem を使用して、そのログを集中化された Graylog2 ログ集約サーバーに送信します。構成 (環境ファイル内) は次のようになります。
config.lograge.enabled = true
config.lograge.log_format = :graylog2
config.logger = GELF::Logger.new("log1.example.com", 12201, "WAN", { :host => "dev", :facility => "rails" })
これはすべて、各リクエストに関連付けられた「メイン」の 200 OK ログ メッセージに対してうまく機能します。問題は、私のコントローラ コードに他の logger.info、logger.warn などが含まれていることです。コードベースに散らばっています。これらの各メッセージは、個別の GELF メッセージ情報 Graylog2 として記録されます。
私が望んでいるのは、単一の HTTP リクエストのすべてのログ メッセージが、Graylog2 の単一のログ メッセージにまとめられ、関連付けられた HTTP リクエストと関連付けられていない孤立したログ メッセージが大量に存在するのではありません。つまり、各 HTTP リクエストの lograge 出力とすべての logger.* 呼び出しを合わせて、graylog2 が管理できる単一のログ行を形成する必要があります。
ここで何が欠けていますか?これは珍しい必要性ではないように思えますが、さらに別のカスタムロガーを作成する必要がないものは見当たりません。