繁体   English   中英

Logstash-logger:Rails 堆栈跟踪拆分为多个 json 行

[英]Logstash-logger: Rails stacktrace splitting into multiple json lines

我正在使用 logstash-logger 来记录我的 Rails 日志。 它适用于大多数情况,但是当出现问题时(即;我收到错误)Rails 会生成堆栈跟踪。 但是记录器将其记录到多个 Json 行中。 我该如何解决这个问题?

我在这里附上一小部分日志

{"message":"开始 GET \\"/\\" ... }

{"message":" ", ... }

{"message":"ActionController::RoutingError (没有路由匹配 [GET] \\"/\\"):" ... }

{"message":"vendor/bundle/ruby/2 ... }

这是单个堆栈跟踪,但记录器将其记录为多个日志。

这是我的 logstash-logger 配置

logstash_logger = LogStashLogger.new(
  type: :file,
  path: "log/#{Rails.env}.log",
  sync: true
)
if "#{Rails.env}" != "development"
  config.logger = logstash_logger
end

自定义日志字段

默认情况下,LogStashLogger 将使用以下格式记录 JSON 对象。

{
  "message":"Some Message",
  "@timestamp":"2015-01-29T10:43:32.196-05:00",
  "@version":"1",
  "severity":"INFO",
  "host":"hostname"
}

然后我读

Rails 集成

支持 Rails 4 和 5。

默认情况下,每条 Rails 日志消息都将以 LogStash::Event JSON 格式写入 logstash。

对于最小的、结构化的 logstash 事件,请尝试以下 gems 之一:

原木

码农

目前这些 gems 输出一个 JSON 字符串,然后 LogStashLogger 解析它。 这些 gem 的未来版本可能会与 LogStashLogger 进行更深入的集成(例如,通过直接编写 LogStash::Event 对象)。

您是否深入研究了本文档,因为他们故意为您提供了json格式

要以多行的json格式获取 rails 日志,您应该使用type: :json_lines

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM