Sha256: 51a68511a63a2260d95a315aab386c92702cbc94f6e3a47bd8559c8452642fb1
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
require 'active_support/notifications' require 'active_record/log_subscriber' module LogStasher module ActiveRecord class LogSubscriber < ::ActiveRecord::LogSubscriber def identity(event) if logger logger << logstash_event(event).to_json + "\n" end end alias :sql :identity def logger LogStasher.logger end private def logstash_event(event) data = event.payload return unless logger.debug? return if 'SCHEMA' == data[:name] data.merge! runtimes(event) data.merge! extract_sql(data) data.merge! request_context data.merge! extract_custom_fields(data) tags = ['request'] tags.push('exception') if payload[:exception] LogStasher.build_logstash_event(data, tags) end def request_context LogStasher.request_context end def runtimes(event) if event.duration { duration: event.duration.to_f.round(2) } else { } end end def extract_sql(data) { sql: data[:sql].squeeze(' ') } end def extract_custom_fields(data) custom_fields = (!LogStasher.custom_fields.empty? && data.extract!(*LogStasher.custom_fields)) || {} LogStasher.custom_fields.clear custom_fields end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
logstasher-0.8.0 | lib/logstasher/active_record/log_subscriber.rb |