Skip to content

Commit 6c912dd

Browse files
committed
Send keys as strings
and move more attributes to the formatter
1 parent ca10594 commit 6c912dd

File tree

2 files changed

+36
-30
lines changed

2 files changed

+36
-30
lines changed

lib/semantic_logger/appender/open_telemetry.rb

+10-26
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,18 @@ def initialize(name: "SemanticLogger",
4343
def log(log)
4444
# return log_metric(log) if metrics && log.metric_only?
4545

46-
ap formatter.call(log, self)
47-
ap log.payload
46+
body = formatter.call(log, self)
47+
level = body.delete(:level)
48+
level_index = body.delete(:level_index)
49+
time = body.delete(:time)
50+
payload = body.delete(:payload)
4851

4952
@logger.on_emit(
50-
severity_text: log.level.to_s,
51-
severity_number: severity_number(log.level),
52-
timestamp: log.time,
53-
body: formatter.call(log, self),
54-
attributes: log.payload,
53+
severity_text: level,
54+
severity_number: level_index,
55+
timestamp: time,
56+
body: body.transform_keys!(&:to_s),
57+
attributes: payload,
5558
context: log.context[:open_telemetry] || ::OpenTelemetry::Context.current
5659
)
5760
true
@@ -76,25 +79,6 @@ def close
7679
# ap log.payload
7780
# true
7881
# end
79-
80-
def severity_number(severity)
81-
case severity.downcase
82-
when :trace
83-
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_TRACE
84-
when :debug
85-
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_DEBUG
86-
when :info
87-
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_INFO
88-
when :warn
89-
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_WARN
90-
when :error
91-
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_ERROR
92-
when :fatal
93-
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_FATAL
94-
else
95-
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED
96-
end
97-
end
9882
end
9983
end
10084
end

lib/semantic_logger/formatters/open_telemetry.rb

+26-4
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,38 @@
22
module SemanticLogger
33
module Formatters
44
class OpenTelemetry < Raw
5-
# Remove the following fields since they are sent via the OpenTelemetry API
6-
def time
7-
end
8-
95
# Log level
106
def level
7+
hash[:level] = log.level.to_s
8+
hash[:level_index] = severity_number(log.level_index)
119
end
1210

1311
# Payload is submitted directly as attributes
1412
def payload
13+
return unless log.payload.respond_to?(:empty?) && !log.payload.empty?
14+
15+
hash[:payload] = log.payload.transform_keys!(&:to_s)
16+
end
17+
18+
private
19+
20+
def severity_number(severity)
21+
case severity
22+
when :trace
23+
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_TRACE
24+
when :debug
25+
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_DEBUG
26+
when :info
27+
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_INFO
28+
when :warn
29+
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_WARN
30+
when :error
31+
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_ERROR
32+
when :fatal
33+
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_FATAL
34+
else
35+
::OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED
36+
end
1537
end
1638
end
1739
end

0 commit comments

Comments
 (0)