@@ -8,19 +8,19 @@ let version: String = "1.0.0"
88
99/// A custom log handler to translate swift logs into otel logs
1010public struct OTelLogHandler : LogHandler {
11-
11+
1212 /// Get or set the configured log level.
1313 ///
1414 /// - note: `LogHandler`s must treat the log level as a value type. This means that the change in metadata must
1515 /// only affect this very `LogHandler`. It is acceptable to provide some form of global log level override
1616 /// that means a change in log level on a particular `LogHandler` might not be reflected in any
1717 /// `LogHandler`.
1818 public var logLevel : Logging . Logger . Level = . info
19-
19+
2020 /// loggerProvider to use for the bridge.
21- private var loggerProvider : LoggerProvider
21+ private var loggerProvider : LoggerProvider
2222 private var logger : OpenTelemetryApi . Logger
23-
23+
2424 // Define metadata for this handler
2525 public var metadata : Logging . Logger . Metadata = [ : ]
2626 public subscript( metadataKey key: String ) -> Logging . Logger . Metadata . Value ? {
@@ -31,15 +31,15 @@ public struct OTelLogHandler: LogHandler {
3131 self . metadata [ key] = newValue
3232 }
3333 }
34-
34+
3535/// create a new OtelLogHandler
3636/// - Parameter loggerProvider: The logger provider to use in the bridge. Defaults to the global logger provider.
3737/// - Parameter includeTraceContext : boolean flag used for the logger builder
3838/// - Parameter attributes: attributes to apply to the logger builder
3939 public init ( loggerProvider: LoggerProvider = OpenTelemetryApi . DefaultLoggerProvider. instance,
40- includeTraceContext : Bool = true ,
41- attributes: [ String : AttributeValue ] = [ String: AttributeValue] ( ) ) {
42-
40+ includeTraceContext: Bool = true ,
41+ attributes: [ String : AttributeValue ] = [ String: AttributeValue] ( ) ) {
42+
4343 self . loggerProvider = loggerProvider
4444 self . logger = self . loggerProvider. loggerBuilder ( instrumentationScopeName: bridgeName)
4545 . setInstrumentationVersion ( version)
@@ -49,62 +49,59 @@ public struct OTelLogHandler: LogHandler {
4949 . setIncludeTraceContext ( includeTraceContext)
5050 . build ( )
5151 }
52-
52+
5353 public func log( level: Logging . Logger . Level ,
5454 message: Logging . Logger . Message ,
5555 metadata: Logging . Logger . Metadata ? ,
5656 source: String ,
5757 file: String ,
5858 function: String ,
5959 line: UInt ) {
60-
61-
60+
6261 // This converts log atrributes to otel attributes
6362 var otelattributes : [ String : AttributeValue ] = [
6463 " source " : AttributeValue . string ( source) ,
6564 " file " : AttributeValue . string ( file) ,
6665 " function " : AttributeValue . string ( function) ,
67- " line " : AttributeValue . int ( Int ( line) ) ,
66+ " line " : AttributeValue . int ( Int ( line) )
6867 ]
69-
68+
7069 // Convert metadata from the method parameter to AttributeValue and assign it to otelattributes
7170 if let metadata = metadata {
7271 let methodMetadata = convertMetadata ( metadata)
7372 otelattributes. merge ( methodMetadata) { _, new in new }
7473 }
75-
74+
7675 // Convert metadata from the struct property to AttributeValue and merge it with otelattributes
7776 let structMetadata = convertMetadata ( self . metadata)
7877 otelattributes. merge ( structMetadata) { _, new in new }
79-
78+
8079 // Build the log record and emit it
8180 let event = self . logger. logRecordBuilder ( ) . setSeverity ( convertSeverity ( level: level) )
8281 . setBody ( AttributeValue . string ( message. description) )
8382 . setAttributes ( otelattributes)
84-
83+
8584 if let context = OpenTelemetry . instance. contextProvider. activeSpan? . context {
8685 _ = event. setSpanContext ( context)
8786 }
8887 event. emit ( )
89-
88+
9089 }
91-
92-
93-
90+
9491}
9592
9693func convertMetadata( _ metadata: Logging . Logger . Metadata ) -> [ String : AttributeValue ] {
9794 var convertedAttributes : [ String : AttributeValue ] = [ : ]
98-
95+
9996 // Iterate over each key-value pair in the metadata dictionary
10097 for (key, value) in metadata {
10198 // Convert each value to AttributeValue
10299 let attributeValue = convertToAttributeValue ( value)
103-
100+
104101 // Store the converted value with its corresponding key in the attributes dictionary
105102 convertedAttributes [ key] = attributeValue
106103 }
107-
104+
108105 return convertedAttributes
109106}
110107
@@ -126,11 +123,11 @@ func convertToAttributeValue(_ value: Logging.Logger.Metadata.Value) -> Attribut
126123 return AttributeValue ( str)
127124 case . stringConvertible( let strConvertable) :
128125 return AttributeValue ( strConvertable. description)
129-
126+
130127 }
131128}
132129
133- func convertSeverity( level: Logging . Logger . Level ) -> OpenTelemetryApi . Severity {
130+ func convertSeverity( level: Logging . Logger . Level ) -> OpenTelemetryApi . Severity {
134131 switch level {
135132 case . trace:
136133 return OpenTelemetryApi . Severity. trace
@@ -145,6 +142,6 @@ func convertSeverity(level: Logging.Logger.Level) -> OpenTelemetryApi.Severity{
145142 case . error:
146143 return OpenTelemetryApi . Severity. error
147144 case . critical:
148- return OpenTelemetryApi . Severity. error2 //should this be fatal instead?
145+ return OpenTelemetryApi . Severity. error2 // should this be fatal instead?
149146 }
150147}
0 commit comments