55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/logstash/outputs/rollbar.rb', line 55
def receive(event)
return unless output?(event)
rb_item = hash_recursive
data = JSON.parse(event.to_json)
if data['rollbar']
merge_keys = %w{access_token client context environment fingerprint format framework
language level person platform request server title uuid }
merge_keys.each do |key|
data['rollbar'][key] && rb_item['data'][key] = data['rollbar'][key]
end
data.delete('rollbar')
end
rb_item['data']['custom'] = data
rb_item['data']['timestamp'] = event.timestamp.to_i
rb_item['data']['level'] = @level unless rb_item['data'].has_key?('level')
rb_item['data']['environment'] = @environment unless rb_item['data'].has_key?('environment')
rb_item['data']['notifier']['name'] = 'logstash'
rb_item['data']['notifier']['version'] = Gem.loaded_specs["logstash-output-rollbar"].version
format = rb_item['data'].has_key?('format') ? rb_item['data']['format'] : @format
rb_item['data']['body']['message']['body'] = event.sprintf(format)
if rb_item['data'].has_key?('access_token')
rb_item['access_token'] = rb_item['data']['access_token']
rb_item['data'].delete('access_token')
else
rb_item['access_token'] = @access_token.value
end
@logger.debug("Rollbar Item", :rb_item => rb_item)
begin
request = Net::HTTP::Post.new(@rb_uri.path)
request.body = JSON.dump(rb_item)
@logger.debug("Rollbar Request", :request => request.body)
response = @client.request(request)
@logger.debug("Rollbar Response", :response => response.body)
rescue Exception => e
@logger.warn("Rollbar Exception", :rb_error => e.backtrace)
end
end
|