|
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