Skip to content

Commit

Permalink
Merge pull request #128 from FundingCircle/open-telemetry
Browse files Browse the repository at this point in the history
Add open telemetry fields to messages by default if present
  • Loading branch information
bliof-fc committed Nov 23, 2023
2 parents 05f9c12 + 05ab704 commit 0c3bbdd
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 7 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [2.8.0] - 2023-11-14
### Added
- Support open-telemetry and add trace_id and span_id to logs events

## [2.7.0] - 2023-03-28
### Added
- Support for sidekiq 7
Expand Down
19 changes: 13 additions & 6 deletions lib/loga/formatters/gelf_formatter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,7 @@ def call(severity, time, _progname, message)
private

def build_event(time, message)
event = case message
when Loga::Event
message
else
Loga::Event.new(message: message)
end
event = message.is_a?(Loga::Event) ? message : Loga::Event.new(message: message)

event.timestamp ||= time
# Overwrite sidekiq_context data anything manually specified
Expand All @@ -54,6 +49,7 @@ def build_event(time, message)
hash.merge! compute_type(event.type)
# Overwrite hash with Loga's additional fields
hash.merge! loga_additional_fields
hash.merge! open_telemetry_fields
end
event
end
Expand Down Expand Up @@ -103,6 +99,17 @@ def loga_additional_fields
}
end

def open_telemetry_fields
return {} unless defined?(::OpenTelemetry::Trace)

span = ::OpenTelemetry::Trace.current_span

{
trace_id: span.context.hex_trace_id,
span_id: span.context.hex_span_id,
}
end

def sidekiq_context
return {} unless defined?(::Sidekiq::Context)

Expand Down
2 changes: 1 addition & 1 deletion lib/loga/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Loga
VERSION = '2.7.0'.freeze
VERSION = '2.8.0'.freeze
end
23 changes: 23 additions & 0 deletions spec/unit/loga/formatters/gelf_formatter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,29 @@ class << self
end
end

context 'when working with additional fields via otel' do
let(:options) { { message: 'Wooden house' } }
let(:message) { Loga::Event.new(options) }
let(:trace_context) { { hex_trace_id: '123', hex_span_id: '456' } }

before do
klass = Class.new do
class << self
attr_accessor :current_span
end
end
klass.current_span = OpenStruct.new(context: OpenStruct.new(trace_context))
stub_const('::OpenTelemetry::Trace', klass)
end

it 'includes the trace_id and span_id' do
expect(json['_trace_id']).to eq('123')
expect(json['_span_id']).to eq('456')
end

include_examples 'valid GELF message'
end

{
'DEBUG' => 7,
'INFO' => 6,
Expand Down

0 comments on commit 0c3bbdd

Please sign in to comment.