Module: Bidi2pdf::Notifications::LoggingSubscriberActions

Included in:
LoggingSubscriber
Defined in:
lib/bidi2pdf/notifications/logging_subscriber.rb

Overview

for reuse within ActiveSupport::LogSubscriber

Instance Method Summary collapse

Instance Method Details

#handle_response(event) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 7

def handle_response(event)
  payload = event.payload

  if payload[:error]
    logger.error "Received error: #{payload[:error].inspect} for cmd: #{payload[:id] || "-"}"
  elsif !payload[:handled]
    Bidi2pdf.logger.warn "Unknown response: #{payload[:data].inspect}"
  end
end

#network_event_received(event) ⇒ Object

rubocop: disable Metrics/AbcSize



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 40

def network_event_received(event)
  return unless logger.debug2?

  msg = case event.payload[:method]
        when "network.beforeRequestSent"
          "Request url '#{event.payload[:url]}' started"

        when "network.responseStarted"
          nil
        when "network.responseCompleted"
          "Request url '#{event.payload[:url]}' completed"
        when "network.fetchError"
          "Request url '#{event.payload[:url]}' error."
        else
          "Unknown network event: #{event.payload[:method]} for url '#{event.payload[:url]}'"
        end

  logger.debug2 msg if msg
end

#network_idle(event) ⇒ Object

rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 61

def network_idle(event)
  return unless logger.info?

  requests = event.payload[:requests]
  transfered = requests.map { |request| request.bytes_received || 0 }.sum
  status_counts = requests
                    .group_by { |evt| evt.http_status_code || 0 }
                    .transform_keys { |code| code.zero? || code.nil? ? "pending" : code.to_s }
                    .transform_values(&:count)
                    .map { |code, count| "#{code}: #{count}" }
                    .join(", ")

  logger.info "Network was idle after #{event.duration.round(1)}ms, #{requests.size} requests, " \
                "transferred #{transfered} bytes (status codes: #{status_counts})"
end

#page_loaded(event) ⇒ Object

rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity



79
80
81
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 79

def page_loaded(event)
  logger.info "Page loaded: #{event.duration.round(1)}ms"
end


83
84
85
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 83

def print(event)
  logger.info "Page printed: #{event.duration.round(1)}ms"
end

#send_cmd(event) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 17

def send_cmd(event)
  logger.debug "Sending command: #{event.payload[:cmd].method_name} id: ##{event.payload[:cmd_payload][:id]}"

  logger.debug1 do
    payload = redact_sensitive_fields(event.payload[:cmd_payload])
    "Sending command: #{payload.inspect} (#{event.duration.round(1)}ms)"
  end
end

#send_cmd_and_wait(event) ⇒ Object



26
27
28
29
30
31
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 26

def send_cmd_and_wait(event)
  return unless event.payload[:exception]

  payload = redact_sensitive_fields(event.payload[:cmd]&.params || {})
  logger.error "Error sending command: #{payload} (#{event.duration.round(1)}ms) - #{event.payload[:exception].inspect}"
end

#session_close(event) ⇒ Object



33
34
35
36
37
# File 'lib/bidi2pdf/notifications/logging_subscriber.rb', line 33

def session_close(event)
  return unless event.payload[:error]

  logger.error "Session close error: #{event.payload[:error].inspect}, attempt: #{event.payload[:attempt]}, retry: #{event.payload[:retry]}"
end