MetadataProvider
A MetadataProvider
is used to automatically inject runtime-generated metadata to all logs emitted by a logger.
struct MetadataProvider
Example
A metadata provider may be used to automatically inject metadata such as trace IDs:
import Tracing // https://github.com/apple/swift-distributed-tracing
let metadataProvider = MetadataProvider {
guard let traceID = Baggage.current?.traceID else { return nil }
return ["traceID": "\(traceID)"]
}
let logger = Logger(label: "example", metadataProvider: metadataProvider)
var baggage = Baggage.topLevel
baggage.traceID = 42
Baggage.withValue(baggage) {
logger.info("hello") // automatically includes ["traceID": "42"] metadata
}
We recommend referring to swift-distributed-tracing for metadata providers which make use of its tracing and metadata propagation infrastructure. It is however possible to make use of metadata providers independently of tracing and instruments provided by that library, if necessary.