lee*_*777 10 ruby logging ruby-on-rails logstash
我正在向Rails 4应用程序添加结构化日志记录.使用本文中描述的lograge和logstash-logger,我得到了大部分工作.
我在向日志添加请求ID时遇到问题.我发现最接近的是将其添加到config/${ENV}.rb:
config.log_tags = [:uuid]
Run Code Online (Sandbox Code Playgroud)
但是这会将请求ID添加到标记列表,而不是将其添加为命名字段.
{
"tags": [
"da76b4be-01ae-4cc4-8d3c-87062ea02cfe"
],
"host": "services",
"severity": "DEBUG",
"@version": "1",
"@timestamp": "2016-09-13T17:24:34.883+00:00",
"message": "..."
}
Run Code Online (Sandbox Code Playgroud)
这是有问题的.它使得如何搜索特定的请求ID变得更加尴尬和不那么明显.另外,在logstash中解析消息它会覆盖已经与日志消息关联的任何其他标记.
有什么办法可以将请求ID作为命名字段添加到日志中吗?
{
"request_id", "da76b4be-01ae-4cc4-8d3c-87062ea02cfe",
"host": "services",
"severity": "DEBUG",
"@version": "1",
"@timestamp": "2016-09-13T17:24:34.883+00:00",
"message": "..."
}
Run Code Online (Sandbox Code Playgroud)
做这件事有很多种方法。从 Lograge 中,您可以使用custom_options:
# all your lograge stuff...
config.lograge.enabled = true
config.lograge.custom_options = lambda do |event|
# use the `event.payload`
{uuid: event.payload[:uuid]}
end
Run Code Online (Sandbox Code Playgroud)
您可以重载此处的任何选项 - 它们将接管库的选项。