@@ -46,10 +46,10 @@ public struct Logger {
4646 var label : String
4747
4848 @usableFromInline
49- var handler : LogHandler
49+ var handler : any LogHandler
5050
5151 @inlinable
52- init ( label: String , handler: LogHandler ) {
52+ init ( label: String , handler: any LogHandler ) {
5353 self . label = label
5454 self . handler = handler
5555 }
@@ -68,7 +68,7 @@ public struct Logger {
6868
6969 /// A computed property to access the `LogHandler`.
7070 @inlinable
71- public var handler : LogHandler {
71+ public var handler : any LogHandler {
7272 get {
7373 return self . _storage. handler
7474 }
@@ -87,7 +87,7 @@ public struct Logger {
8787 }
8888
8989 @usableFromInline
90- internal init ( label: String , _ handler: LogHandler ) {
90+ internal init ( label: String , _ handler: any LogHandler ) {
9191 self . _storage = Storage ( label: label, handler: handler)
9292 }
9393}
@@ -515,7 +515,7 @@ public enum LoggingSystem {
515515 ///
516516 /// - parameters:
517517 /// - factory: A closure that given a `Logger` identifier, produces an instance of the `LogHandler`.
518- public static func bootstrap( _ factory: @escaping ( String ) -> LogHandler ) {
518+ public static func bootstrap( _ factory: @escaping ( String ) -> any LogHandler ) {
519519 self . _factory. replaceFactory ( { label, _ in
520520 factory ( label)
521521 } , validate: true )
@@ -531,28 +531,28 @@ public enum LoggingSystem {
531531 /// - parameters:
532532 /// - metadataProvider: The `MetadataProvider` used to inject runtime-generated metadata from the execution context.
533533 /// - factory: A closure that given a `Logger` identifier, produces an instance of the `LogHandler`.
534- public static func bootstrap( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> LogHandler ,
534+ public static func bootstrap( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> any LogHandler ,
535535 metadataProvider: Logger . MetadataProvider ? ) {
536536 self . _metadataProviderFactory. replaceMetadataProvider ( metadataProvider, validate: true )
537537 self . _factory. replaceFactory ( factory, validate: true )
538538 }
539539
540540 // for our testing we want to allow multiple bootstrapping
541- internal static func bootstrapInternal( _ factory: @escaping ( String ) -> LogHandler ) {
541+ internal static func bootstrapInternal( _ factory: @escaping ( String ) -> any LogHandler ) {
542542 self . _metadataProviderFactory. replaceMetadataProvider ( nil , validate: false )
543543 self . _factory. replaceFactory ( { label, _ in
544544 factory ( label)
545545 } , validate: false )
546546 }
547547
548548 // for our testing we want to allow multiple bootstrapping
549- internal static func bootstrapInternal( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> LogHandler ,
549+ internal static func bootstrapInternal( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> any LogHandler ,
550550 metadataProvider: Logger . MetadataProvider ? ) {
551551 self . _metadataProviderFactory. replaceMetadataProvider ( metadataProvider, validate: false )
552552 self . _factory. replaceFactory ( factory, validate: false )
553553 }
554554
555- fileprivate static var factory : ( String , Logger . MetadataProvider ? ) -> LogHandler {
555+ fileprivate static var factory : ( String , Logger . MetadataProvider ? ) -> any LogHandler {
556556 return { label, metadataProvider in
557557 self . _factory. underlying ( label, metadataProvider)
558558 }
@@ -582,22 +582,22 @@ public enum LoggingSystem {
582582
583583 private final class FactoryBox {
584584 private let lock = ReadWriteLock ( )
585- fileprivate var _underlying : ( _ label: String , _ provider: Logger . MetadataProvider ? ) -> LogHandler
585+ fileprivate var _underlying : ( _ label: String , _ provider: Logger . MetadataProvider ? ) -> any LogHandler
586586 private var initialized = false
587587
588- init ( _ underlying: @escaping ( String , Logger . MetadataProvider ? ) -> LogHandler ) {
588+ init ( _ underlying: @escaping ( String , Logger . MetadataProvider ? ) -> any LogHandler ) {
589589 self . _underlying = underlying
590590 }
591591
592- func replaceFactory( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> LogHandler , validate: Bool ) {
592+ func replaceFactory( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> any LogHandler , validate: Bool ) {
593593 self . lock. withWriterLock {
594594 precondition ( !validate || !self . initialized, " logging system can only be initialized once per process. " )
595595 self . _underlying = factory
596596 self . initialized = true
597597 }
598598 }
599599
600- var underlying : ( String , Logger . MetadataProvider ? ) -> LogHandler {
600+ var underlying : ( String , Logger . MetadataProvider ? ) -> any LogHandler {
601601 return self . lock. withReaderLock {
602602 return self . _underlying
603603 }
@@ -655,7 +655,7 @@ extension Logger {
655655 case string( String )
656656
657657 /// A metadata value which is some `CustomStringConvertible`.
658- case stringConvertible( CustomStringConvertible & Sendable )
658+ case stringConvertible( any CustomStringConvertible & Sendable )
659659
660660 /// A metadata value which is a dictionary from `String` to `Logger.MetadataValue`.
661661 ///
@@ -728,7 +728,7 @@ extension Logger {
728728 /// - parameters:
729729 /// - label: An identifier for the creator of a `Logger`.
730730 /// - factory: A closure creating non-standard `LogHandler`s.
731- public init ( label: String , factory: ( String ) -> LogHandler ) {
731+ public init ( label: String , factory: ( String ) -> any LogHandler ) {
732732 self = Logger ( label: label, factory ( label) )
733733 }
734734
@@ -743,7 +743,7 @@ extension Logger {
743743 /// - parameters:
744744 /// - label: An identifier for the creator of a `Logger`.
745745 /// - factory: A closure creating non-standard `LogHandler`s.
746- public init ( label: String , factory: ( String , Logger . MetadataProvider ? ) -> LogHandler ) {
746+ public init ( label: String , factory: ( String , Logger . MetadataProvider ? ) -> any LogHandler ) {
747747 self = Logger ( label: label, factory ( label, LoggingSystem . metadataProvider) )
748748 }
749749
@@ -889,7 +889,7 @@ extension Logger {
889889/// "more important" than the second handler. The same rule applies when querying for the `metadata` property of the
890890/// multiplex log handler - it constructs `Metadata` uniquing values.
891891public struct MultiplexLogHandler : LogHandler {
892- private var handlers : [ LogHandler ]
892+ private var handlers : [ any LogHandler ]
893893 private var effectiveLogLevel : Logger . Level
894894 /// This metadata provider runs after all metadata providers of the multiplexed handlers.
895895 private var _metadataProvider : Logger . MetadataProvider ?
@@ -899,13 +899,13 @@ public struct MultiplexLogHandler: LogHandler {
899899 /// - parameters:
900900 /// - handlers: An array of `LogHandler`s, each of which will receive the log messages sent to this `Logger`.
901901 /// The array must not be empty.
902- public init ( _ handlers: [ LogHandler ] ) {
902+ public init ( _ handlers: [ any LogHandler ] ) {
903903 assert ( !handlers. isEmpty, " MultiplexLogHandler.handlers MUST NOT be empty " )
904904 self . handlers = handlers
905905 self . effectiveLogLevel = handlers. map { $0. logLevel } . min ( ) ?? . trace
906906 }
907907
908- public init ( _ handlers: [ LogHandler ] , metadataProvider: Logger . MetadataProvider ? ) {
908+ public init ( _ handlers: [ any LogHandler ] , metadataProvider: Logger . MetadataProvider ? ) {
909909 assert ( !handlers. isEmpty, " MultiplexLogHandler.handlers MUST NOT be empty " )
910910 self . handlers = handlers
911911 self . effectiveLogLevel = handlers. map { $0. logLevel } . min ( ) ?? . trace
@@ -1009,7 +1009,7 @@ public struct MultiplexLogHandler: LogHandler {
10091009 }
10101010 }
10111011
1012- private mutating func mutatingForEachHandler( _ mutator: ( inout LogHandler ) -> Void ) {
1012+ private mutating func mutatingForEachHandler( _ mutator: ( inout any LogHandler ) -> Void ) {
10131013 for index in self . handlers. indices {
10141014 mutator ( & self . handlers [ index] )
10151015 }
@@ -1126,7 +1126,7 @@ public struct StreamLogHandler: LogHandler {
11261126 return StreamLogHandler ( label: label, stream: StdioOutputStream . stderr, metadataProvider: metadataProvider)
11271127 }
11281128
1129- private let stream : _SendableTextOutputStream
1129+ private let stream : any _SendableTextOutputStream
11301130 private let label : String
11311131
11321132 public var logLevel : Logger . Level = . info
@@ -1150,12 +1150,12 @@ public struct StreamLogHandler: LogHandler {
11501150 }
11511151
11521152 // internal for testing only
1153- internal init ( label: String , stream: _SendableTextOutputStream ) {
1153+ internal init ( label: String , stream: any _SendableTextOutputStream ) {
11541154 self . init ( label: label, stream: stream, metadataProvider: LoggingSystem . metadataProvider)
11551155 }
11561156
11571157 // internal for testing only
1158- internal init ( label: String , stream: _SendableTextOutputStream , metadataProvider: Logger . MetadataProvider ? ) {
1158+ internal init ( label: String , stream: any _SendableTextOutputStream , metadataProvider: Logger . MetadataProvider ? ) {
11591159 self . label = label
11601160 self . stream = stream
11611161 self . metadataProvider = metadataProvider
0 commit comments