Class: Lepus::LogSubscriber
- Inherits:
-
ActiveSupport::LogSubscriber
- Object
- ActiveSupport::LogSubscriber
- Lepus::LogSubscriber
- Defined in:
- lib/lepus/rails/log_subscriber.rb
Instance Method Summary collapse
- #deregister_process(event) ⇒ Object
- #graceful_termination(event) ⇒ Object
- #immediate_termination(event) ⇒ Object
- #prune_processes(event) ⇒ Object
- #register_process(event) ⇒ Object
- #replace_fork(event) ⇒ Object
- #shutdown_process(event) ⇒ Object
- #start_process(event) ⇒ Object
- #thread_error(event) ⇒ Object
- #unhandled_signal_error(event) ⇒ Object
Instance Method Details
#deregister_process(event) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/lepus/rails/log_subscriber.rb', line 41 def deregister_process(event) process = event.payload[:process] attributes = { process_id: process.id, pid: process.pid, hostname: process.hostname, name: process.name, last_heartbeat_at: process.last_heartbeat_at&.strftime("%Y-%m-%d %H:%M:%S"), claimed_size: event.payload[:claimed_size], pruned: event.payload[:pruned] } if (error = event.payload[:error]) warn formatted_event(event, action: "Error deregistering #{process.kind}", **attributes.merge(error: formatted_error(error))) else debug formatted_event(event, action: "Deregister #{process.kind}", **attributes) end end |
#graceful_termination(event) ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'lib/lepus/rails/log_subscriber.rb', line 69 def graceful_termination(event) attributes = event.payload.slice(:process_id, :supervisor_pid, :supervised_processes) if event.payload[:shutdown_timeout_exceeded] warn formatted_event(event, action: "Supervisor wasn't terminated gracefully - shutdown timeout exceeded", **attributes) else info formatted_event(event, action: "Supervisor terminated gracefully", **attributes) end end |
#immediate_termination(event) ⇒ Object
79 80 81 |
# File 'lib/lepus/rails/log_subscriber.rb', line 79 def immediate_termination(event) info formatted_event(event, action: "Supervisor terminated immediately", **event.payload.slice(:process_id, :supervisor_pid, :supervised_processes)) end |
#prune_processes(event) ⇒ Object
61 62 63 |
# File 'lib/lepus/rails/log_subscriber.rb', line 61 def prune_processes(event) debug formatted_event(event, action: "Prune dead processes", **event.payload.slice(:size)) end |
#register_process(event) ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/lepus/rails/log_subscriber.rb', line 30 def register_process(event) process_kind = event.payload[:kind] attributes = event.payload.slice(:pid, :hostname, :process_id, :name) if (error = event.payload[:error]) warn formatted_event(event, action: "Error registering #{process_kind}", **attributes.merge(error: formatted_error(error))) else debug formatted_event(event, action: "Register #{process_kind}", **attributes) end end |
#replace_fork(event) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/lepus/rails/log_subscriber.rb', line 87 def replace_fork(event) status = event.payload[:status] attributes = event.payload.slice(:pid).merge \ status: status.exitstatus || "no exit status set", pid_from_status: status.pid, signaled: status.signaled?, stopsig: status.stopsig, termsig: status.termsig if (replaced_fork = event.payload[:fork]) info formatted_event(event, action: "Replaced terminated #{replaced_fork.kind}", **attributes.merge(hostname: replaced_fork.hostname, name: replaced_fork.name)) else warn formatted_event(event, action: "Tried to replace forked process but it had already died", **attributes) end end |
#shutdown_process(event) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/lepus/rails/log_subscriber.rb', line 17 def shutdown_process(event) process = event.payload[:process] attributes = { pid: process.pid, hostname: process.hostname, process_id: process.process_id, name: process.name }.merge(process.) info formatted_event(event, action: "Shutdown #{process.kind}", **attributes) end |
#start_process(event) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/lepus/rails/log_subscriber.rb', line 4 def start_process(event) process = event.payload[:process] attributes = { pid: process.pid, hostname: process.hostname, process_id: process.process_id, name: process.name }.merge(process.) info formatted_event(event, action: "Started #{process.kind}", **attributes) end |
#thread_error(event) ⇒ Object
65 66 67 |
# File 'lib/lepus/rails/log_subscriber.rb', line 65 def thread_error(event) error formatted_event(event, action: "Error in thread", error: formatted_error(event.payload[:error])) end |
#unhandled_signal_error(event) ⇒ Object
83 84 85 |
# File 'lib/lepus/rails/log_subscriber.rb', line 83 def unhandled_signal_error(event) error formatted_event(event, action: "Received unhandled signal", **event.payload.slice(:signal)) end |