2

Unicorn でタグ付きログを使用し、環境ファイルで次の構成を使用しています。

config.logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
config.log_tags = [:uuid]

ここまでは順調ですね。

タグに関しては、方法はありますか -

  1. 特定のリクエスト ヘッダーを出力する

  2. カスタム UUID、つまり私が生成できるものを出力します。Rails が出力するデフォルトの UUID が長すぎます。

4

1 に答える 1

2

この Gist の例をいくつか参照してください https://gist.github.com/2513183

request オブジェクトにアクセスできる proc を log_tags 配列に追加できます。

その proc で UUID を生成するか、次のように before_filter で ApplicationController から request.env を介して何かを渡すことができます。

#application_controller.rb
before_filter :set_some_request_env

def set_some_request_env
  request.env['some_var'] = "Happy"
end

# application.rb
config.log_tags = [
  -> request {
    request.env['some_var']
  }
]

アップデート

このメソッドを使用して#tagged、特定のブロック内で送信されるすべてのログ メッセージにタグを追加できます。

リクエストまたはコントローラ パラメータからタグ付き出力にパラメータを取得するには、次の手順を実行できます。

#application_controller.rb
around_filter :add_tags_to_logs

def add_tags_to_logs
  Rails.logger.tagged(custom_uuid_for_current_user) do
    yield
  end
end
于 2012-11-14T00:43:20.833 に答える