Class: Stackify::LogsSender
- Inherits:
-
HttpClient
- Object
- HttpClient
- Stackify::LogsSender
- Defined in:
- lib/stackify/logs_sender.rb
Constant Summary collapse
- LOGS_URI =
URI("#{Stackify.configuration.base_api_url}/Log/Save")
Constants inherited from HttpClient
Instance Attribute Summary
Attributes inherited from HttpClient
Instance Method Summary collapse
- #get_epoch(msg) ⇒ Object
- #has_error(msg) ⇒ Object
-
#initialize ⇒ LogsSender
constructor
A new instance of LogsSender.
- #log(level, msg, call_trace, task) ⇒ Object
- #log_exception(level = :error, ex, task) ⇒ Object
- #log_exception_task(level, ex, trans_id = nil, log_uuid = nil) ⇒ Object
- #log_message_task(level, msg, call_trace, trans_id = nil, log_uuid = nil) ⇒ Object
- #send_logs(msgs, attempts = 3) ⇒ Object
Constructor Details
#initialize ⇒ LogsSender
Returns a new instance of LogsSender.
6 7 8 |
# File 'lib/stackify/logs_sender.rb', line 6 def initialize @@errors_governor = Stackify::ErrorsGovernor.new end |
Instance Method Details
#get_epoch(msg) ⇒ Object
41 42 43 |
# File 'lib/stackify/logs_sender.rb', line 41 def get_epoch msg msg['EpochMs'] end |
#has_error(msg) ⇒ Object
37 38 39 |
# File 'lib/stackify/logs_sender.rb', line 37 def has_error msg !msg['Ex'].nil? end |
#log(level, msg, call_trace, task) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/stackify/logs_sender.rb', line 10 def log level, msg, call_trace, task Stackify::Utils. Stackify::MODES[:logging] do if acceptable?(level, msg) && Stackify.working? worker = Stackify::AddMsgWorker.new worker.async_perform ScheduleDelay.new, task end end end |
#log_exception(level = :error, ex, task) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/stackify/logs_sender.rb', line 19 def log_exception level= :error, ex, task if ex.is_a?(Stackify::StackifiedError) Stackify::Utils. Stackify::MODES[:logging] do if acceptable?(level, ex.) && Stackify.working? if @@errors_governor.can_send? ex worker = Stackify::AddMsgWorker.new worker.async_perform ScheduleDelay.new, task else Stackify.internal_log :warn, "LoggerClient: logging of exception with message \"#{ex.}\" is skipped - flood_limit is exceeded" end end end else Stackify.log_internal_error 'LoggerClient: log_exception should get StackifiedError object' end end |
#log_exception_task(level, ex, trans_id = nil, log_uuid = nil) ⇒ Object
64 65 66 67 68 |
# File 'lib/stackify/logs_sender.rb', line 64 def log_exception_task level, ex, trans_id=nil, log_uuid=nil Stackify::ScheduleTask.new ({limit: 1}) do Stackify.msgs_queue << Stackify::MsgObject.new(level, ex., caller[0], trans_id, log_uuid, ex).to_h end end |
#log_message_task(level, msg, call_trace, trans_id = nil, log_uuid = nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/stackify/logs_sender.rb', line 45 def level, msg, call_trace, trans_id=nil, log_uuid=nil Stackify::ScheduleTask.new ({limit: 1}) do if %w(error fatal).include?(level) ex = if ruby_exception?(msg) && msg.class != Class msg.set_backtrace(call_trace) msg else e = StringException.new(msg) e.set_backtrace(call_trace) e end ex = StackifiedError.new(ex, binding()) Stackify.msgs_queue << Stackify::MsgObject.new(level, ex., caller[0], trans_id, log_uuid, ex).to_h else Stackify.msgs_queue << Stackify::MsgObject.new(level, msg, caller[0], trans_id, log_uuid).to_h end end end |
#send_logs(msgs, attempts = 3) ⇒ Object
70 71 72 73 74 |
# File 'lib/stackify/logs_sender.rb', line 70 def send_logs msgs, attempts = 3 worker = Stackify::LogsSenderWorker.new task = send_logs_task attempts, msgs worker.async_perform ScheduleDelay.new, task end |