Module: Xhummingbird
- Defined in:
- lib/xhummingbird.rb,
lib/xhummingbird/client.rb,
lib/xhummingbird/version.rb,
lib/xhummingbird/protos/event_pb.rb,
lib/xhummingbird/rack/capture_exception.rb
Defined Under Namespace
Modules: Rack
Classes: Client, Error
Constant Summary
collapse
- XH_SERVICE =
'XH_SERVICE'
- LOGGER =
Logger.new(STDERR)
- VERSION =
"0.1.6"
- Event =
::Google::Protobuf::DescriptorPool.generated_pool.lookup("xhummingbird.Event").msgclass
Class Method Summary
collapse
Class Method Details
.debug(*args) ⇒ Object
20
21
22
|
# File 'lib/xhummingbird.rb', line 20
def self.debug(*args)
LOGGER.debug(*args) if ENV['XH_DEBUG']
end
|
.default_service ⇒ Object
116
117
118
119
120
|
# File 'lib/xhummingbird.rb', line 116
def self.default_service
debug(__method__)
ENV.fetch(XH_SERVICE, "")
end
|
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/xhummingbird.rb', line 84
def self.default_tags
debug(__method__)
{
"default/sdk" => "Ruby #{Xhummingbird::VERSION}",
"default/hostname" => Socket.gethostname,
"default/ruby_version" => RUBY_VERSION,
"default/pid" => Process.pid.to_s,
"default/thread_object_id" => Thread.current.object_id.to_s
}
end
|
.enabled? ⇒ Boolean
78
79
80
81
82
|
# File 'lib/xhummingbird.rb', line 78
def self.enabled?
debug(__method__)
Client.instance.enabled?
end
|
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/xhummingbird.rb', line 104
def self.format_hash(hash)
debug(__method__)
formatted = {}
hash.each do |k, v|
formatted[k.to_s] = v.to_s
end
formatted
end
|
.send(**args) ⇒ Object
96
97
98
99
100
101
102
|
# File 'lib/xhummingbird.rb', line 96
def self.send(**args)
debug(__method__)
event = Event.new(**args)
message = Event.encode(event)
Client.instance.send(message)
end
|
.send_event(**args) ⇒ Object
68
69
70
71
72
73
74
75
76
|
# File 'lib/xhummingbird.rb', line 68
def self.send_event(**args)
debug(__method__)
return unless enabled?
send(**args)
rescue => e
debug(e)
end
|
.send_exception(exception, level: 2, tags: {}, service: nil) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/xhummingbird.rb', line 50
def self.send_exception(exception, level: 2, tags: {}, service: nil)
debug(__method__)
return unless enabled?
send(
level: level,
title: exception.class.name,
message: exception.message,
trace: exception.backtrace,
tags: default_tags.merge(format_hash(tags)),
timestamp: Time.now,
service: service || default_service
)
rescue => e
debug(e)
end
|
.send_trace(title:, message: "", level: 1, tags: {}, service: nil) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/xhummingbird.rb', line 32
def self.send_trace(title:, message: "", level: 1, tags: {}, service: nil)
debug(__method__)
return unless enabled?
send(
level: level,
title: title.to_s,
message: message.to_s,
trace: caller,
tags: default_tags.merge(format_hash(tags)),
timestamp: Time.now,
service: service || default_service
)
rescue => e
debug(e)
end
|
.start ⇒ Object
24
25
26
27
28
29
30
|
# File 'lib/xhummingbird.rb', line 24
def self.start
debug(__method__)
Client.instance.start
send_trace(title: "Started", message: "Xhummingbird Ruby SDK started.", level: 0)
end
|