63 lines · 1.6 KB · Swift
RawDownload
import Logging struct CompositeLogHandler: LogHandler {    private var primary: any LogHandler    private var secondary: any LogHandler     init(primary: any LogHandler, secondary: any LogHandler) {        self.primary = primary        self.secondary = secondary    }     var metadata: Logger.Metadata {        get { self.primary.metadata }        set {            self.primary.metadata = newValue            self.secondary.metadata = newValue        }    }     var logLevel: Logger.Level {        get { self.primary.logLevel }        set {            self.primary.logLevel = newValue            self.secondary.logLevel = newValue        }    }     subscript(metadataKey metadataKey: String) -> Logger.Metadata.Value? {        get { self.primary[metadataKey: metadataKey] }        set {            self.primary[metadataKey: metadataKey] = newValue            self.secondary[metadataKey: metadataKey] = newValue        }    }     // swiftlint:disable:next function_parameter_count    func log(        level: Logger.Level,        message: Logger.Message,        metadata: Logger.Metadata?,        source: String,        file: String,        function: String,        line: UInt)    {        self.primary.log(            level: level,            message: message,            metadata: metadata,            source: source,            file: file,            function: function,            line: line)        self.secondary.log(            level: level,            message: message,            metadata: metadata,            source: source,            file: file,            function: function,            line: line)    }}