2

我正在使用带有 Unicorn 的 Tagged Logging 并在我的环境文件中使用以下配置。

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

您可以将 proc 添加到 log_tags 数组中,该数组可以访问请求对象。

您可以在该过程中生成一个 UUID,或者您可以通过 request.env 从您的 ApplicationController 在 before_filter 中传递一些东西,如下所示:

#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 回答