我正在使用带有 Unicorn 的 Tagged Logging 并在我的环境文件中使用以下配置。
config.logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
config.log_tags = [:uuid]
到目前为止,一切都很好。
当涉及到标签时,有没有办法 -
打印出特定的请求标头
打印自定义 UUID,即我可以生成的东西。rails 吐出的默认 UUID 太长。
我正在使用带有 Unicorn 的 Tagged Logging 并在我的环境文件中使用以下配置。
config.logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
config.log_tags = [:uuid]
到目前为止,一切都很好。
当涉及到标签时,有没有办法 -
打印出特定的请求标头
打印自定义 UUID,即我可以生成的东西。rails 吐出的默认 UUID 太长。
在此处查看此 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