Logstash-logger:Rails stacktrace拆分为多个json行

时间:2017-11-08 13:48:07

标签: ruby logstash

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

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

  

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

     

{"消息":" ",...}

     

{" 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

2 个答案:

答案 0 :(得分:0)

  

Custom Log Fields

     

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

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

然后我读了

  

Rails Integration

     

支持Rails 4和5.

     

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

     

对于最小的,结构更为合理的logstash事件,请尝试以下某个gem:

lograge

yarder

  

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

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

答案 1 :(得分:0)

要获取多行json格式的Rails日志,应使用type: :json_lines