Skip to content

Commit 07d8102

Browse files
committed
Merge pull request #5 from blackopseng3/master
Logger Exception handling improvements
2 parents ec938bb + 83f69f2 commit 07d8102

3 files changed

Lines changed: 30 additions & 5 deletions

File tree

lib/stackify-api-ruby.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ module Stackify
2727
autoload :LogsSender, 'stackify/logs_sender'
2828
autoload :LoggerProxy, 'stackify/logger_proxy'
2929
autoload :StackifiedError, 'stackify/error'
30+
autoload :StringException, 'stackify/error'
3031
autoload :ErrorsGovernor, 'stackify/errors_governor'
3132
autoload :Metrics, 'stackify/metrics/metrics'
3233

lib/stackify/error.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
module Stackify
2-
2+
class StringException < StandardError
3+
def class
4+
'StringException'.freeze
5+
end
6+
end
37
class StackifiedError < StandardError
48

59
CONTEXT_PROPERTIES = { 'user' => 'current_user'}

lib/stackify/logger_client.rb

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,20 @@ def is_appropriate_env?
5858

5959
def log_message_task level, msg, call_trace
6060
Stackify::ScheduleTask.new ({limit: 1}) do
61-
e = Exception.new(msg)
62-
e.set_backtrace(call_trace)
63-
ex = StackifiedError.new(e, binding())
64-
Stackify.msgs_queue << Stackify::MsgObject.new(level, ex.message, caller[0], ex).to_h
61+
if %w(error fatal).include?(level)
62+
ex = if ruby_exception?(msg) && msg.class != Class
63+
msg.set_backtrace(call_trace)
64+
msg
65+
else
66+
e = StringException.new(msg)
67+
e.set_backtrace(call_trace)
68+
e
69+
end
70+
ex = StackifiedError.new(ex, binding())
71+
Stackify.msgs_queue << Stackify::MsgObject.new(level, ex.message, caller[0], ex).to_h
72+
else
73+
Stackify.msgs_queue << Stackify::MsgObject.new(level, msg, caller[0]).to_h
74+
end
6575
end
6676
end
6777

@@ -70,6 +80,16 @@ def log_exception_task level, ex
7080
Stackify.msgs_queue << Stackify::MsgObject.new(level, ex.message, caller[0], ex).to_h
7181
end
7282
end
83+
84+
def ruby_exception? klass
85+
klass = klass.class == Class ? klass : klass.class
86+
klasses = [klass]
87+
while klass != Object do
88+
klasses << klass.superclass
89+
klass = klass.superclass
90+
end
91+
klasses.include?(Exception)
92+
end
7393
end
7494

7595
end

0 commit comments

Comments
 (0)