@@ -46,10 +46,10 @@ public struct Logger {
46
46
var label : String
47
47
48
48
@usableFromInline
49
- var handler : LogHandler
49
+ var handler : any LogHandler
50
50
51
51
@inlinable
52
- init ( label: String , handler: LogHandler ) {
52
+ init ( label: String , handler: any LogHandler ) {
53
53
self . label = label
54
54
self . handler = handler
55
55
}
@@ -68,7 +68,7 @@ public struct Logger {
68
68
69
69
/// A computed property to access the `LogHandler`.
70
70
@inlinable
71
- public var handler : LogHandler {
71
+ public var handler : any LogHandler {
72
72
get {
73
73
return self . _storage. handler
74
74
}
@@ -87,7 +87,7 @@ public struct Logger {
87
87
}
88
88
89
89
@usableFromInline
90
- internal init ( label: String , _ handler: LogHandler ) {
90
+ internal init ( label: String , _ handler: any LogHandler ) {
91
91
self . _storage = Storage ( label: label, handler: handler)
92
92
}
93
93
}
@@ -515,7 +515,7 @@ public enum LoggingSystem {
515
515
///
516
516
/// - parameters:
517
517
/// - 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 ) {
519
519
self . _factory. replaceFactory ( { label, _ in
520
520
factory ( label)
521
521
} , validate: true )
@@ -531,28 +531,28 @@ public enum LoggingSystem {
531
531
/// - parameters:
532
532
/// - metadataProvider: The `MetadataProvider` used to inject runtime-generated metadata from the execution context.
533
533
/// - 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 ,
535
535
metadataProvider: Logger . MetadataProvider ? ) {
536
536
self . _metadataProviderFactory. replaceMetadataProvider ( metadataProvider, validate: true )
537
537
self . _factory. replaceFactory ( factory, validate: true )
538
538
}
539
539
540
540
// 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 ) {
542
542
self . _metadataProviderFactory. replaceMetadataProvider ( nil , validate: false )
543
543
self . _factory. replaceFactory ( { label, _ in
544
544
factory ( label)
545
545
} , validate: false )
546
546
}
547
547
548
548
// 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 ,
550
550
metadataProvider: Logger . MetadataProvider ? ) {
551
551
self . _metadataProviderFactory. replaceMetadataProvider ( metadataProvider, validate: false )
552
552
self . _factory. replaceFactory ( factory, validate: false )
553
553
}
554
554
555
- fileprivate static var factory : ( String , Logger . MetadataProvider ? ) -> LogHandler {
555
+ fileprivate static var factory : ( String , Logger . MetadataProvider ? ) -> any LogHandler {
556
556
return { label, metadataProvider in
557
557
self . _factory. underlying ( label, metadataProvider)
558
558
}
@@ -582,22 +582,22 @@ public enum LoggingSystem {
582
582
583
583
private final class FactoryBox {
584
584
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
586
586
private var initialized = false
587
587
588
- init ( _ underlying: @escaping ( String , Logger . MetadataProvider ? ) -> LogHandler ) {
588
+ init ( _ underlying: @escaping ( String , Logger . MetadataProvider ? ) -> any LogHandler ) {
589
589
self . _underlying = underlying
590
590
}
591
591
592
- func replaceFactory( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> LogHandler , validate: Bool ) {
592
+ func replaceFactory( _ factory: @escaping ( String , Logger . MetadataProvider ? ) -> any LogHandler , validate: Bool ) {
593
593
self . lock. withWriterLock {
594
594
precondition ( !validate || !self . initialized, " logging system can only be initialized once per process. " )
595
595
self . _underlying = factory
596
596
self . initialized = true
597
597
}
598
598
}
599
599
600
- var underlying : ( String , Logger . MetadataProvider ? ) -> LogHandler {
600
+ var underlying : ( String , Logger . MetadataProvider ? ) -> any LogHandler {
601
601
return self . lock. withReaderLock {
602
602
return self . _underlying
603
603
}
@@ -655,7 +655,7 @@ extension Logger {
655
655
case string( String )
656
656
657
657
/// A metadata value which is some `CustomStringConvertible`.
658
- case stringConvertible( CustomStringConvertible & Sendable )
658
+ case stringConvertible( any CustomStringConvertible & Sendable )
659
659
660
660
/// A metadata value which is a dictionary from `String` to `Logger.MetadataValue`.
661
661
///
@@ -728,7 +728,7 @@ extension Logger {
728
728
/// - parameters:
729
729
/// - label: An identifier for the creator of a `Logger`.
730
730
/// - 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 ) {
732
732
self = Logger ( label: label, factory ( label) )
733
733
}
734
734
@@ -743,7 +743,7 @@ extension Logger {
743
743
/// - parameters:
744
744
/// - label: An identifier for the creator of a `Logger`.
745
745
/// - 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 ) {
747
747
self = Logger ( label: label, factory ( label, LoggingSystem . metadataProvider) )
748
748
}
749
749
@@ -889,7 +889,7 @@ extension Logger {
889
889
/// "more important" than the second handler. The same rule applies when querying for the `metadata` property of the
890
890
/// multiplex log handler - it constructs `Metadata` uniquing values.
891
891
public struct MultiplexLogHandler : LogHandler {
892
- private var handlers : [ LogHandler ]
892
+ private var handlers : [ any LogHandler ]
893
893
private var effectiveLogLevel : Logger . Level
894
894
/// This metadata provider runs after all metadata providers of the multiplexed handlers.
895
895
private var _metadataProvider : Logger . MetadataProvider ?
@@ -899,13 +899,13 @@ public struct MultiplexLogHandler: LogHandler {
899
899
/// - parameters:
900
900
/// - handlers: An array of `LogHandler`s, each of which will receive the log messages sent to this `Logger`.
901
901
/// The array must not be empty.
902
- public init ( _ handlers: [ LogHandler ] ) {
902
+ public init ( _ handlers: [ any LogHandler ] ) {
903
903
assert ( !handlers. isEmpty, " MultiplexLogHandler.handlers MUST NOT be empty " )
904
904
self . handlers = handlers
905
905
self . effectiveLogLevel = handlers. map { $0. logLevel } . min ( ) ?? . trace
906
906
}
907
907
908
- public init ( _ handlers: [ LogHandler ] , metadataProvider: Logger . MetadataProvider ? ) {
908
+ public init ( _ handlers: [ any LogHandler ] , metadataProvider: Logger . MetadataProvider ? ) {
909
909
assert ( !handlers. isEmpty, " MultiplexLogHandler.handlers MUST NOT be empty " )
910
910
self . handlers = handlers
911
911
self . effectiveLogLevel = handlers. map { $0. logLevel } . min ( ) ?? . trace
@@ -1009,7 +1009,7 @@ public struct MultiplexLogHandler: LogHandler {
1009
1009
}
1010
1010
}
1011
1011
1012
- private mutating func mutatingForEachHandler( _ mutator: ( inout LogHandler ) -> Void ) {
1012
+ private mutating func mutatingForEachHandler( _ mutator: ( inout any LogHandler ) -> Void ) {
1013
1013
for index in self . handlers. indices {
1014
1014
mutator ( & self . handlers [ index] )
1015
1015
}
@@ -1126,7 +1126,7 @@ public struct StreamLogHandler: LogHandler {
1126
1126
return StreamLogHandler ( label: label, stream: StdioOutputStream . stderr, metadataProvider: metadataProvider)
1127
1127
}
1128
1128
1129
- private let stream : _SendableTextOutputStream
1129
+ private let stream : any _SendableTextOutputStream
1130
1130
private let label : String
1131
1131
1132
1132
public var logLevel : Logger . Level = . info
@@ -1150,12 +1150,12 @@ public struct StreamLogHandler: LogHandler {
1150
1150
}
1151
1151
1152
1152
// internal for testing only
1153
- internal init ( label: String , stream: _SendableTextOutputStream ) {
1153
+ internal init ( label: String , stream: any _SendableTextOutputStream ) {
1154
1154
self . init ( label: label, stream: stream, metadataProvider: LoggingSystem . metadataProvider)
1155
1155
}
1156
1156
1157
1157
// 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 ? ) {
1159
1159
self . label = label
1160
1160
self . stream = stream
1161
1161
self . metadataProvider = metadataProvider
0 commit comments