Class: FlowChat::Instrumentation::LogSubscriber
- Inherits:
-
Object
- Object
- FlowChat::Instrumentation::LogSubscriber
- Defined in:
- lib/flow_chat/instrumentation/log_subscriber.rb
Instance Method Summary collapse
- #api_request(event) ⇒ Object
-
#context_created(event) ⇒ Object
Context events.
- #flow_execution_end(event) ⇒ Object
- #flow_execution_error(event) ⇒ Object
-
#flow_execution_start(event) ⇒ Object
Flow execution events.
- #media_upload(event) ⇒ Object
-
#message_received(event) ⇒ Object
Platform-agnostic events (new scalable approach).
- #message_sent(event) ⇒ Object
- #middleware_after(event) ⇒ Object
-
#middleware_before(event) ⇒ Object
Middleware events.
- #pagination_triggered(event) ⇒ Object
- #session_cache_hit(event) ⇒ Object
- #session_cache_miss(event) ⇒ Object
-
#session_created(event) ⇒ Object
Session events.
- #session_data_get(event) ⇒ Object
- #session_data_set(event) ⇒ Object
- #session_destroyed(event) ⇒ Object
- #webhook_failed(event) ⇒ Object
- #webhook_verified(event) ⇒ Object
Instance Method Details
#api_request(event) ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 132 def api_request(event) payload = event.payload platform = payload[:platform] || "unknown" platform_name = format_platform_name(platform) duration = event.duration.round(2) if payload[:success] FlowChat.logger.debug { "#{platform_name} API Request: #{payload[:method]} #{payload[:endpoint]} (#{duration}ms) - Success" } else FlowChat.logger.error { "#{platform_name} API Request: #{payload[:method]} #{payload[:endpoint]} (#{duration}ms) - Failed: #{payload[:status]} #{payload[:error]}" } end end |
#context_created(event) ⇒ Object
Context events
146 147 148 149 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 146 def context_created(event) payload = event.payload FlowChat.logger.debug { "Context Created [Gateway: #{payload[:gateway] || "unknown"}]" } end |
#flow_execution_end(event) ⇒ Object
10 11 12 13 14 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 10 def flow_execution_end(event) payload = event.payload duration = event.duration.round(2) FlowChat.logger.info { "Flow Execution Completed: #{payload[:flow_name]}##{payload[:action]} (#{duration}ms) [Session: #{payload[:session_id]}]" } end |
#flow_execution_error(event) ⇒ Object
16 17 18 19 20 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 16 def flow_execution_error(event) payload = event.payload duration = event.duration.round(2) FlowChat.logger.error { "Flow Execution Failed: #{payload[:flow_name]}##{payload[:action]} (#{duration}ms) - #{payload[:error_class]}: #{payload[:error_message]} [Session: #{payload[:session_id]}]" } end |
#flow_execution_start(event) ⇒ Object
Flow execution events
5 6 7 8 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 5 def flow_execution_start(event) payload = event.payload FlowChat.logger.info { "Flow Execution Started: #{payload[:flow_name]}##{payload[:action]} [Session: #{payload[:session_id]}]" } end |
#media_upload(event) ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 112 def media_upload(event) payload = event.payload platform = payload[:platform] || "unknown" platform_name = format_platform_name(platform) duration = event.duration.round(2) if payload[:success] != false # Check for explicit false, not just falsy FlowChat.logger.info { "#{platform_name} Media Upload: #{payload[:filename]} (#{format_bytes(payload[:size])}, #{duration}ms) - Success" } else FlowChat.logger.error { "#{platform_name} Media Upload Failed: #{payload[:filename]} (#{duration}ms) - #{payload[:error]}" } end end |
#message_received(event) ⇒ Object
Platform-agnostic events (new scalable approach)
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 66 def (event) payload = event.payload platform = payload[:platform] || "unknown" platform_name = format_platform_name(platform) case platform.to_sym when :whatsapp contact_info = payload[:contact_name] ? " (#{payload[:contact_name]})" : "" FlowChat.logger.info { "#{platform_name} Message Received: #{payload[:from]}#{contact_info} - Type: #{payload[:message_type]} [ID: #{payload[:message_id]}]" } when :ussd FlowChat.logger.info { "#{platform_name} Message Received: #{payload[:from]} - Input: '#{payload[:message]}' [Session: #{payload[:session_id]}]" } else FlowChat.logger.info { "#{platform_name} Message Received: #{payload[:from]} - Message: '#{payload[:message]}' [Session: #{payload[:session_id]}]" } end end |
#message_sent(event) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 82 def (event) payload = event.payload platform = payload[:platform] || "unknown" platform_name = format_platform_name(platform) duration = event.duration.round(2) case platform.to_sym when :whatsapp FlowChat.logger.info { "#{platform_name} Message Sent: #{payload[:to]} - Type: #{payload[:message_type]} (#{duration}ms) [Length: #{payload[:content_length]} chars]" } when :ussd FlowChat.logger.info { "#{platform_name} Message Sent: #{payload[:to]} - Type: #{payload[:message_type]} (#{duration}ms) [Session: #{payload[:session_id]}]" } else FlowChat.logger.info { "#{platform_name} Message Sent: #{payload[:to]} - Type: #{payload[:message_type]} (#{duration}ms)" } end end |
#middleware_after(event) ⇒ Object
59 60 61 62 63 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 59 def middleware_after(event) payload = event.payload duration = event.duration.round(2) FlowChat.logger.debug { "Middleware After: #{payload[:middleware_name]} (#{duration}ms) [Session: #{payload[:session_id]}]" } end |
#middleware_before(event) ⇒ Object
Middleware events
54 55 56 57 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 54 def middleware_before(event) payload = event.payload FlowChat.logger.debug { "Middleware Before: #{payload[:middleware_name]} [Session: #{payload[:session_id]}]" } end |
#pagination_triggered(event) ⇒ Object
125 126 127 128 129 130 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 125 def pagination_triggered(event) payload = event.payload platform = payload[:platform] || "unknown" platform_name = format_platform_name(platform) FlowChat.logger.info { "#{platform_name} Pagination Triggered: Page #{payload[:current_page]}/#{payload[:total_pages]} (#{payload[:content_length]} chars) [Session: #{payload[:session_id]}]" } end |
#session_cache_hit(event) ⇒ Object
33 34 35 36 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 33 def session_cache_hit(event) payload = event.payload FlowChat.logger.debug { "Session Cache Hit: #{payload[:session_id]} - Key: #{payload[:key]}" } end |
#session_cache_miss(event) ⇒ Object
38 39 40 41 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 38 def session_cache_miss(event) payload = event.payload FlowChat.logger.debug { "Session Cache Miss: #{payload[:session_id]} - Key: #{payload[:key]}" } end |
#session_created(event) ⇒ Object
Session events
23 24 25 26 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 23 def session_created(event) payload = event.payload FlowChat.logger.info { "Session Created: #{payload[:session_id]} [Store: #{payload[:store_type]}, Gateway: #{payload[:gateway]}]" } end |
#session_data_get(event) ⇒ Object
48 49 50 51 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 48 def session_data_get(event) payload = event.payload FlowChat.logger.debug { "Session Data Get: #{payload[:session_id]} - Key: #{payload[:key]} = #{payload[:value].inspect}" } end |
#session_data_set(event) ⇒ Object
43 44 45 46 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 43 def session_data_set(event) payload = event.payload FlowChat.logger.debug { "Session Data Set: #{payload[:session_id]} - Key: #{payload[:key]}" } end |
#session_destroyed(event) ⇒ Object
28 29 30 31 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 28 def session_destroyed(event) payload = event.payload FlowChat.logger.info { "Session Destroyed: #{payload[:session_id]} [Gateway: #{payload[:gateway]}]" } end |
#webhook_failed(event) ⇒ Object
105 106 107 108 109 110 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 105 def webhook_failed(event) payload = event.payload platform = payload[:platform] || "unknown" platform_name = format_platform_name(platform) FlowChat.logger.warn { "#{platform_name} Webhook Verification Failed: #{payload[:reason]}" } end |
#webhook_verified(event) ⇒ Object
98 99 100 101 102 103 |
# File 'lib/flow_chat/instrumentation/log_subscriber.rb', line 98 def webhook_verified(event) payload = event.payload platform = payload[:platform] || "unknown" platform_name = format_platform_name(platform) FlowChat.logger.info { "#{platform_name} Webhook Verified Successfully [Challenge: #{payload[:challenge]}]" } end |