forked from Automattic/hostmgr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlibhostmgr.swift
51 lines (39 loc) · 1.42 KB
/
libhostmgr.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import Foundation
import OSLog
public let hostmgrVersion = "0.53.1"
public extension Logger {
private static let subsystem = "com.automattic.hostmgr"
static let cli = AlwaysLogToConsoleMiddleware(logger: Logger(subsystem: subsystem, category: "cli"))
static let lib = AlwaysLogToConsoleMiddleware(logger: Logger(subsystem: subsystem, category: "lib"))
static let helper = AlwaysLogToConsoleMiddleware(logger: Logger(subsystem: subsystem, category: "helper"))
}
public protocol LoggingMiddleware {
var logger: Logger { get }
var useVerboseLogging: Bool { get }
}
extension LoggingMiddleware {
public func log(_ message: String, level: OSLogType = .default) {
var mutableLevel = level
// Treat everything like a fault to bypass the systems' logging settings
if useVerboseLogging {
mutableLevel = .fault
}
logger.log(level: mutableLevel, "\(message, privacy: .public)")
}
public func debug(_ message: String) {
log(message, level: .debug)
}
public func error(_ message: String) {
log(message, level: .error)
}
public func info(_ message: String) {
log(message, level: .info)
}
public func warning(_ message: String) {
log(message, level: .fault)
}
}
public struct AlwaysLogToConsoleMiddleware: LoggingMiddleware {
public let logger: Logger
public var useVerboseLogging: Bool = true
}