我正在使用标记日志记录与Unicorn并在我的环境文件中使用以下配置。
config.logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
config.log_tags = [:uuid]
到目前为止一切顺利。
说到标签,有没有办法 -
打印出特定的请求标题
打印自定义UUID,即我可以生成的内容。 rails吐出的默认UUID太长。
答案 0 :(得分:1)
在此处查看此要点中的一些示例https://gist.github.com/2513183
您可以向log_tags数组添加一个proc,该数组可以访问请求对象。
您可以在该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