43
44
45
46
47
48
49
50
51
52
53
54
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
|
# File 'lib/fluent/plugin/out_sentry.rb', line 43
def write(chunk)
chunk.msgpack_each do |tag, time, record|
begin
event = Sentry::Event.new(configuration: @client.configuration)
event.level = (record['level'] || @level).downcase
event.environment = record['env'] || @environment
if @type === :event
log.warn(record, @tag_keys, @user_keys, @data_keys)
event.message = record['message']
event.user = record.select{ |key| @user_keys.include?(key) }
event. = @data_keys.length() > 0 ? record.select{ |key| @data_keys.include?(key) } : record
event.contexts = {'data' => { origin_data: record }}
event.tags = event.tags.merge({ :tag => tag })
.merge({ :timestamp => Time.at(time).strftime('%Y-%m-%d %H:%M:%S %Z') })
.merge(record.select{ |key| (@tag_keys + @user_keys).include?(key) })
event = event.to_hash
elsif @type === :exception
event = event.to_hash
event['exception'] = Sentry::CustomExceptionInterface.new(
type: record['message'] || '',
message: (record[@e_describe] + (record[@e_line] ? (' on line:' + record[@e_line]) : '')) || '',
stacktrace: Sentry::StacktraceInterface.new(frames: [Sentry::CustomStacktraceFrame.new(
filename: record[@e_filename] || '',
context_line: (record[@e_describe] + (record[@e_line] ? (' on line:' + record[@e_line]) : '')) || '',
post_context: record[@e_stack] || (record[@e_describe] || ''),
)])
).to_hash
event['tags'] = { :tag => tag }
.merge({ :timestamp => Time.at(time).strftime('%d-%b-%Y %H:%M:%S %Z') })
.merge(record.select{ |key| (@tag_keys + @user_keys).include?(key) })
end
event['logger'] = @title
@client.send_event(event)
rescue => e
log.error("Sentry Error:", :error_class => e.class, :error => e.message)
end
end
end
|