@@ -32,16 +32,10 @@ extension LoggerClient {
3232 func info( _ message: Logging . Logger . Message ) { log ( . info, message) }
3333 func warning( _ message: Logging . Logger . Message ) { log ( . warning, message) }
3434 func trace( _ message: Logging . Logger . Message ) { log ( . trace, message) }
35- var logger : Logging . Logger ? {
36- Self . _logger. withLock {
37- switch $0 {
38- case . uninitialized:
39- return nil
40- case let . initialized( value) :
41- return value. logger
42- }
43- }
35+ func report( error: Error , file: String = #fileID, function: String = #function, line: UInt = #line) {
36+ logger. report ( error: error, file: file, function: function, line: line)
4437 }
38+ var logger : Logging . Logger { Self . _logger. withLock { $0 } }
4539}
4640
4741
@@ -52,12 +46,12 @@ extension LoggerClient: DependencyKey {
5246 _logger. withLock { $0. log ( level: level, message) }
5347 } ,
5448 set: { logger in
55- _logger. withLock { $0. setLogger ( logger) }
49+ _logger. withLock { $0 = logger }
5650 }
5751 )
5852 }
5953
60- private static let _logger = Mutex ( Logger . uninitialized ( . init ( ) ) )
54+ private static let _logger = Mutex ( Logging . Logger ( component : " default " ) )
6155}
6256
6357
@@ -72,71 +66,3 @@ extension DependencyValues {
7266 set { self [ LoggerClient . self] = newValue }
7367 }
7468}
75-
76-
77- #warning("Simplify this - we don't really need the typestate mechanism")
78- // Modeled after https://swiftology.io/articles/typestate/
79-
80- extension LoggerClient {
81-
82- private enum Logger : ~ Copyable {
83- case uninitialized( _UninitializedLogger )
84- case initialized( _InitializedLogger )
85-
86- mutating func setLogger( _ logger: Logging . Logger ) {
87- self = . initialized( . init( logger: logger) )
88- }
89-
90- func log(
91- level: Logging . Logger . Level ,
92- _ message: @autoclosure ( ) -> Logging . Logger . Message ,
93- metadata: @autoclosure ( ) -> Logging . Logger . Metadata ? = nil ,
94- source: @autoclosure ( ) -> String ? = nil ,
95- file: String = #fileID,
96- function: String = #function,
97- line: UInt = #line
98- ) {
99- switch self {
100- case . uninitialized:
101- break
102- case let . initialized( logger) :
103- logger. log ( level: level,
104- message ( ) ,
105- metadata: metadata ( ) ,
106- source: source ( ) ,
107- file: file,
108- function: function,
109- line: line)
110- }
111- }
112- }
113-
114- }
115-
116-
117- private struct _UninitializedLogger : ~ Copyable {
118- consuming func setLogger( _ logger: Logging . Logger ) -> _InitializedLogger {
119- . init( logger: logger)
120- }
121- }
122-
123- private struct _InitializedLogger : ~ Copyable {
124- var logger : Logging . Logger
125-
126- init ( logger: Logging . Logger ) {
127- self . logger = logger
128- }
129-
130- func log(
131- level: Logging . Logger . Level ,
132- _ message: @autoclosure ( ) -> Logging . Logger . Message ,
133- metadata: @autoclosure ( ) -> Logging . Logger . Metadata ? = nil ,
134- source: @autoclosure ( ) -> String ? = nil ,
135- file: String = #fileID,
136- function: String = #function,
137- line: UInt = #line
138- ) {
139- logger. log ( level: level, message ( ) , metadata: metadata ( ) , source: source ( ) , file: file, function: function, line: line)
140- }
141- }
142-
0 commit comments