Sha256: e69b58f7c863b8af89082643cfc9b461798848c64615cbdd384b011d9b7c22c1
Contents?: true
Size: 1.78 KB
Versions: 2
Compression:
Stored size: 1.78 KB
Contents
# encoding: utf-8 # This file is distributed under New Relic's license terms. # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details. module NewRelic module Agent module Instrumentation module Logger def skip_instrumenting? defined?(@skip_instrumenting) && @skip_instrumenting end def mark_skip_instrumenting @skip_instrumenting = true end def clear_skip_instrumenting @skip_instrumenting = false end LINES = "Logging/lines".freeze SIZE = "Logging/size".freeze def line_metric_name_by_severity(severity) @line_metrics ||= {} @line_metrics[severity] ||= "Logging/lines/#{severity}".freeze end def size_metric_name_by_severity(severity) @size_metrics ||= {} @size_metrics[severity] ||= "Logging/size/#{severity}".freeze end def format_message_with_tracing(severity, datetime, progname, msg) formatted_message = yield return formatted_message if skip_instrumenting? begin # It's critical we don't instrument logging from metric recording # methods within NewRelic::Agent, or we'll stack overflow!! mark_skip_instrumenting NewRelic::Agent.increment_metric(LINES) NewRelic::Agent.increment_metric(line_metric_name_by_severity(severity)) size = formatted_message.nil? ? 0 : formatted_message.bytesize NewRelic::Agent.record_metric(SIZE, size) NewRelic::Agent.record_metric(size_metric_name_by_severity(severity), size) return formatted_message ensure clear_skip_instrumenting end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
newrelic_rpm-8.2.0 | lib/new_relic/agent/instrumentation/logger/instrumentation.rb |
newrelic_rpm-8.1.0 | lib/new_relic/agent/instrumentation/logger/instrumentation.rb |