我使用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
答案 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:
目前这些gems输出一个JSON字符串,然后LogStashLogger会解析。这些gem的未来版本可能与LogStashLogger进行更深层次的集成(例如,通过直接编写LogStash :: Event对象)。
您是否深入研究了本文档,因为他们故意为您提供json
格式
答案 1 :(得分:0)
要获取多行json
格式的Rails日志,应使用type: :json_lines
。