class Dc::Metrics::Logger

Public Instance Methods

log(level, message, metadata) click to toggle source
   # File lib/dc/metrics/logger.rb
11 def log(level, message, metadata)
12   begin
13     return if Metrics.configuration.disabled?
14 
15     base_model = build_base_model(level, message, metadata)
16 
17     log_to_stdout(base_model)
18     log_to_metrics(base_model)
19   rescue StandardError => e
20     puts "[Error][Dc::Metrics] #{e.message}"      if e.message != nil
21     puts "[Error][Dc::Metrics] #{e.backtrace[0]}" if e.backtrace[0] != nil
22   end
23 end

Private Instance Methods

build_base_model(level, message, metadata) click to toggle source
   # File lib/dc/metrics/logger.rb
55 def build_base_model(level, message, metadata)
56   {
57     level:                level.to_s.upcase,
58     message:              message,
59     caller:               Metrics.configuration.caller,
60     environment:          Metrics.configuration.environment,
61     correlation_id:       build_correlation_id(metadata),
62     create_timestamp:     Time.now.to_i * (10**9) + Time.now.nsec,
63     action:               metadata[:action],
64     direction:            metadata[:direction],
65     source_type:          metadata[:source_type],
66     source_name:          metadata[:source_name],
67     duration_ms:          metadata[:duration_ms],
68     root_resource_type:   metadata[:root_resource_type],
69     ext_root_resource_id: metadata[:ext_root_resource_id].to_s,
70     int_root_resource_id: metadata[:int_root_resource_id].to_s,
71     child_resource_type:  metadata[:child_resource_type],
72     child_resource_id:    metadata[:child_resource_id].to_s,
73     ext_store_id:         metadata[:ext_store_id].to_s,
74     int_store_id:         metadata[:int_store_id].to_s,
75     error_code:           metadata[:error_code],
76     payload:              metadata[:payload]
77   }
78 end
build_correlation_id(metadata) click to toggle source
   # File lib/dc/metrics/logger.rb
87 def build_correlation_id(metadata)
88   [
89     metadata[:source_type],
90     metadata[:source_name],
91     metadata[:ext_root_resource_id],
92     metadata[:int_root_resource_id]
93   ].join('-')
94 end
build_metrics_payload(base_model) click to toggle source
   # File lib/dc/metrics/logger.rb
45 def build_metrics_payload(base_model)
46   metrics_data = base_model.reject { |k, _v| %i[message payload].include?(k) }
47   metrics_data[:create_timestamp] = to_google_timestamp(metrics_data[:create_timestamp])
48   DeliveryCenter::Logging::Integration::V1::WriteMetricsRequest.new(metrics_data)
49 end
build_stdout_payload(base_model) click to toggle source
   # File lib/dc/metrics/logger.rb
32 def build_stdout_payload(base_model)
33   {
34     message: base_model[:message],
35     modelLog: base_model,
36     severity: base_model[:level]
37   }
38 end
log_to_metrics(base_model) click to toggle source
   # File lib/dc/metrics/logger.rb
40 def log_to_metrics(base_model)
41   metrics_payload = build_metrics_payload(base_model)
42   make_metrics_request(metrics_payload)
43 end
log_to_stdout(base_model) click to toggle source
   # File lib/dc/metrics/logger.rb
27 def log_to_stdout(base_model)
28   stdout_payload = build_stdout_payload(base_model)
29   puts JSON(stdout_payload)
30 end
make_metrics_request(write_metrics_request_protob) click to toggle source
   # File lib/dc/metrics/logger.rb
51 def make_metrics_request(write_metrics_request_protob)
52   Metrics::PubSub.new.publish(write_metrics_request_protob)
53 end
to_google_timestamp(nanoseconds) click to toggle source
   # File lib/dc/metrics/logger.rb
80 def to_google_timestamp(nanoseconds)
81   Google::Protobuf::Timestamp.new(
82     seconds: nanoseconds / 1_000_000_000,
83     nanos: nanoseconds % 1_000_000_000
84   )
85 end