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