@@ -83,6 +83,9 @@ public final class Logger {
83
83
84
84
var disableNSLog : Bool = false
85
85
86
+ /// Used to log to stderr when `NSLog` logging is disabled.
87
+ var dateFormatter : DateFormatter
88
+
86
89
/// The current logging level.
87
90
public var currentLevel : LogLevel {
88
91
get { return logLevelQueue. sync { _currentLevel } }
@@ -94,6 +97,9 @@ public final class Logger {
94
97
public init ( disableOSLog: Bool = false , disableNSLog: Bool = false ) {
95
98
self . disableOSLog = disableOSLog
96
99
self . disableNSLog = disableNSLog
100
+
101
+ self . dateFormatter = DateFormatter ( )
102
+ dateFormatter. dateFormat = " yyyy-MM-dd HH:mm:ss.SSS "
97
103
}
98
104
99
105
public func addLogHandler( _ handler: LogHandler ) {
@@ -181,11 +187,19 @@ public final class Logger {
181
187
}
182
188
}
183
189
190
+ private func logToStderr( _ message: String , level: LogLevel ) {
191
+ let time = self . dateFormatter. string ( from: Date ( ) )
192
+ let fullMessage = " [ \( time) ] \( message) \n "
193
+ fputs ( fullMessage, stderr)
194
+ }
195
+
184
196
private func logImpl( _ message: String , level: LogLevel , usedOSLog: Bool ) {
185
197
186
198
if !self . disableNSLog && !usedOSLog {
187
199
// Fallback to NSLog if os_log isn't available.
188
200
NSLog ( message)
201
+ } else {
202
+ self . logToStderr ( message, level: level)
189
203
}
190
204
191
205
for handler in self . handlers {
0 commit comments