|
6 | 6 | // |
7 | 7 |
|
8 | 8 | import Foundation |
| 9 | +#if os(Linux) |
9 | 10 | import Logging |
10 | | - |
11 | 11 | typealias SwiftLog = Logging.Logger |
| 12 | +#else |
| 13 | +import OSLog |
| 14 | +typealias SwiftLog = os.Logger |
| 15 | +#endif |
12 | 16 |
|
13 | 17 | public struct Logger { |
14 | 18 |
|
15 | 19 | static var loggingService: Loggable = { |
16 | | - var swiftLog = SwiftLog(label: "com.algolia.searchClientSwift") |
17 | | - print("Algolia Search Client Swift: Default minimal log severity level is info. Change Logger.minLogServerityLevel value if you want to change it.") |
18 | | - swiftLog.logLevel = .info |
19 | | - return swiftLog |
| 20 | + var logger: Loggable |
| 21 | + #if os(Linux) |
| 22 | + logger = SwiftLog(label: "com.algolia.searchClientSwift") |
| 23 | + #else |
| 24 | + logger = SwiftLog(subsystem: "com.algolia", category: "searchClientSwift") |
| 25 | + #endif |
| 26 | + return logger |
20 | 27 | }() |
21 | 28 |
|
| 29 | + @available(*, deprecated, message: "minSeverityLevel is deprecated") |
22 | 30 | public static var minSeverityLevel: LogLevel { |
23 | 31 | get { |
24 | 32 | return loggingService.minSeverityLevel |
@@ -79,6 +87,7 @@ extension Logger { |
79 | 87 |
|
80 | 88 | } |
81 | 89 |
|
| 90 | +#if os(Linux) |
82 | 91 | extension LogLevel { |
83 | 92 |
|
84 | 93 | init(swiftLogLevel: SwiftLog.Level) { |
@@ -107,27 +116,81 @@ extension LogLevel { |
107 | 116 |
|
108 | 117 | } |
109 | 118 |
|
110 | | -protocol Loggable { |
| 119 | +extension SwiftLog: Loggable { |
111 | 120 |
|
112 | | - var minSeverityLevel: LogLevel { get set } |
| 121 | + var minSeverityLevel: LogLevel { |
| 122 | + get { |
| 123 | + return LogLevel(swiftLogLevel: logLevel) |
| 124 | + } |
| 125 | + set { |
| 126 | + self.logLevel = newValue.swiftLogLevel |
| 127 | + } |
| 128 | + } |
113 | 129 |
|
114 | | - func log(level: LogLevel, message: String) |
| 130 | + func log(level: LogLevel, message: String) { |
| 131 | + self.log(level: level.swiftLogLevel, SwiftLog.Message(stringLiteral: message), metadata: .none) |
| 132 | + } |
| 133 | + |
| 134 | +} |
| 135 | + |
| 136 | +#else |
| 137 | + |
| 138 | +extension LogLevel { |
| 139 | + |
| 140 | + init(_ type: OSLogType) { |
| 141 | + switch type { |
| 142 | + case .debug: |
| 143 | + self = .debug |
| 144 | + case .info: |
| 145 | + self = .info |
| 146 | + case .error: |
| 147 | + self = .error |
| 148 | + case .fault: |
| 149 | + self = .critical |
| 150 | + default: |
| 151 | + self = .info |
| 152 | + } |
| 153 | + } |
| 154 | + |
| 155 | + var type: OSLogType { |
| 156 | + switch self { |
| 157 | + case .trace: return .info |
| 158 | + case .debug: return .debug |
| 159 | + case .info: return .info |
| 160 | + case .notice: return .info |
| 161 | + case .warning: return .info |
| 162 | + case .error: return .error |
| 163 | + case .critical: return .fault |
| 164 | + } |
| 165 | + } |
115 | 166 |
|
116 | 167 | } |
117 | 168 |
|
118 | 169 | extension SwiftLog: Loggable { |
119 | 170 |
|
120 | 171 | var minSeverityLevel: LogLevel { |
121 | 172 | get { |
122 | | - return LogLevel(swiftLogLevel: logLevel) |
| 173 | + .init(.default) |
123 | 174 | } |
| 175 | + // swiftlint:disable:next unused_setter_value |
124 | 176 | set { |
125 | | - self.logLevel = newValue.swiftLogLevel |
| 177 | + log(level: .info, "minSeverityLevel is deprecated") |
126 | 178 | } |
127 | 179 | } |
128 | 180 |
|
129 | 181 | func log(level: LogLevel, message: String) { |
130 | | - self.log(level: level.swiftLogLevel, SwiftLog.Message(stringLiteral: message), metadata: .none) |
| 182 | + log(level: level.type, "\(message)") |
131 | 183 | } |
132 | 184 |
|
133 | 185 | } |
| 186 | + |
| 187 | +#endif |
| 188 | + |
| 189 | +protocol Loggable { |
| 190 | + |
| 191 | + @available(*, deprecated, message: "minSeverityLevel is deprecated") |
| 192 | + var minSeverityLevel: LogLevel { get set } |
| 193 | + |
| 194 | + func log(level: LogLevel, message: String) |
| 195 | + |
| 196 | +} |
0 commit comments