class OpenCensus::Trace::Exporters::Logger
The Logger
exporter exports captured spans to a standard Ruby Logger
interface.
Public Class Methods
new(logger, level: ::Logger::INFO)
click to toggle source
Create a new Logger
exporter
@param [#log] logger The logger to write to. @param [Integer] level The log level. This should be a log level
defined by the Logger standard library. Default is `::Logger::INFO`.
# File lib/opencensus/trace/exporters/logger.rb, line 35 def initialize logger, level: ::Logger::INFO @logger = logger @level = level end
Public Instance Methods
export(spans)
click to toggle source
Export the captured spans to the configured logger.
@param [Array<Span>] spans The captured spans.
# File lib/opencensus/trace/exporters/logger.rb, line 45 def export spans @logger.log @level, spans.map { |span| format_span(span) }.to_json nil end
Private Instance Methods
format_annotation(annotation)
click to toggle source
# File lib/opencensus/trace/exporters/logger.rb, line 92 def format_annotation annotation { description: format_value(annotation.description), attributes: format_attributes(annotation.attributes), dropped_attributes_count: annotation.dropped_attributes_count, time: annotation.time } end
format_attributes(attrs)
click to toggle source
# File lib/opencensus/trace/exporters/logger.rb, line 130 def format_attributes attrs result = {} attrs.each do |k, v| result[k] = format_value v end result end
format_link(link)
click to toggle source
# File lib/opencensus/trace/exporters/logger.rb, line 111 def format_link link { trace_id: link.trace_id, span_id: link.span_id, type: link.type, attributes: format_attributes(link.attributes), dropped_attributes_count: link.dropped_attributes_count } end
format_message_event(message_event)
click to toggle source
# File lib/opencensus/trace/exporters/logger.rb, line 101 def format_message_event message_event { type: message_event.type, id: message_event.id, uncompressed_size: message_event.uncompressed_size, compressed_size: message_event.compressed_size, time: message_event.time } end
format_span(span)
click to toggle source
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize
# File lib/opencensus/trace/exporters/logger.rb, line 55 def format_span span { name: format_value(span.name), kind: span.kind, trace_id: span.trace_id, span_id: span.span_id, parent_span_id: span.parent_span_id, start_time: span.start_time, end_time: span.end_time, attributes: format_attributes(span.attributes), dropped_attributes_count: span.dropped_attributes_count, stack_trace: span.stack_trace, dropped_frames_count: span.dropped_frames_count, stack_trace_hash_id: span.stack_trace_hash_id, time_events: span.time_events.map { |te| format_time_event(te) }, dropped_annotations_count: span.dropped_annotations_count, dropped_message_events_count: span.dropped_message_events_count, links: span.links.map { |link| format_link(link) }, dropped_links_count: span.dropped_links_count, status: format_status(span.status), same_process_as_parent_span: span.same_process_as_parent_span, child_span_count: span.child_span_count } end
format_status(status)
click to toggle source
# File lib/opencensus/trace/exporters/logger.rb, line 121 def format_status status return nil if status.nil? { code: status.code, message: status.message } end
format_time_event(time_event)
click to toggle source
rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize
# File lib/opencensus/trace/exporters/logger.rb, line 83 def format_time_event time_event case time_event when Annotation format_annotation time_event when MessageEvent format_message_event time_event end end
format_value(value)
click to toggle source
# File lib/opencensus/trace/exporters/logger.rb, line 138 def format_value value case value when String, Integer, true, false value when TruncatableString if value.truncated_byte_count.zero? value.value else { value: value.value, truncated_byte_count: value.truncated_byte_count } end else nil end end