@@ -51,40 +51,58 @@ import os
51
51
}
52
52
}
53
53
54
- public func ITBError( _ message: String ? = nil , file: String = #file, method: String = #function, line: Int = #line) {
55
- let logMessage = formatLogMessage ( message: message, file: file, method: method, line: line)
56
- if #available( iOS 10 . 0 , * ) {
57
- os_log ( " %@ " , log: OSLog . default, type: . error, logMessage)
58
- } else {
59
- print ( logMessage)
54
+ public class DefaultLogDelegate : IterableLogDelegate {
55
+ public func log( level: LogLevel = . info, message: String ) {
56
+ guard let configLogLevel = IterableAPIInternal . sharedInstance? . config. logLevel, level. rawValue >= configLogLevel. rawValue else {
57
+ return
58
+ }
59
+
60
+ switch level {
61
+ case . error:
62
+ // Error goes to os_log, if available
63
+ if #available( iOS 10 . 0 , * ) {
64
+ os_log ( " %@ " , log: OSLog . default, type: . error, message)
65
+ } else {
66
+ print ( message)
67
+ }
68
+ case . info:
69
+ let markerStr = " 💛 "
70
+ print ( " \( markerStr) \( message) " )
71
+ case . debug:
72
+ // no logging
73
+ break
74
+ }
60
75
}
61
76
}
62
77
63
- private func formatLogMessage( message: String ? , file: String , method: String , line: Int ) -> String {
78
+ public func ITBError( _ message: String ? = nil , file: String = #file, method: String = #function, line: Int = #line) {
79
+ let date = IterableAPIInternal . sharedInstance? . dateProvider. currentDate ?? Date ( )
80
+ let logMessage = formatLogMessage ( message: message, file: file, method: method, line: line, date: date)
81
+ IterableAPIInternal . sharedInstance? . config. logDelegate. log ( level: . error, message: logMessage)
82
+ }
83
+
84
+ private func formatLogMessage( message: String ? , file: String , method: String , line: Int , date: Date ) -> String {
64
85
let fileUrl = NSURL ( fileURLWithPath: file)
65
86
let fileToDisplay = fileUrl. deletingPathExtension!. lastPathComponent
87
+
88
+ let formattedDate = formatDate ( date: date)
66
89
67
90
if let zeeMessage = message {
68
- return " \( fileToDisplay) : \( method) : \( line) : \( zeeMessage) "
91
+ return " \( formattedDate ) : \( fileToDisplay) : \( method) : \( line) : \( zeeMessage) "
69
92
} else {
70
- return " \( fileToDisplay) : \( method) : \( line) "
93
+ return " \( formattedDate ) : \( fileToDisplay) : \( method) : \( line) "
71
94
}
72
95
}
73
96
74
- /// It will print the output only if 'LOG' is defined in the project via -D LOG as 'Other Swift Flags'
75
- public func ITBInfo( _ message: String ? = nil , file: String = #file, method: String = #function, line: Int = #line) {
76
- #if LOG
77
- let fileUrl = NSURL ( fileURLWithPath: file)
78
- let fileToDisplay = fileUrl. deletingPathExtension!. lastPathComponent
79
-
97
+ private func formatDate( date: Date ) -> String {
80
98
let formatter = DateFormatter ( )
81
99
formatter. dateFormat = " HH:mm:ss.SSSS "
82
- let time = formatter. string ( from: Date ( ) )
83
-
84
- if let zeeMessage = message {
85
- print ( " ===> \( time ) : \( fileToDisplay ) : \( method ) : \( line ) : \( zeeMessage ) " )
86
- } else {
87
- print ( " ===> \( time ) : \( fileToDisplay ) : \( method ) : \( line ) " )
88
- }
89
- #endif
100
+ return formatter. string ( from: date )
101
+ }
102
+
103
+ /// It will print the output only if 'LOG' is defined in the project via -D LOG as 'Other Swift Flags'
104
+ public func ITBInfo ( _ message : String ? = nil , file : String = #file , method : String = #function , line : Int = #line ) {
105
+ let date = IterableAPIInternal . sharedInstance ? . dateProvider . currentDate ?? Date ( )
106
+ let logMessage = formatLogMessage ( message : message , file : file , method : method , line : line , date : date )
107
+ IterableAPIInternal . sharedInstance ? . config . logDelegate . log ( level : . info , message : logMessage )
90
108
}
0 commit comments