42 lines
1.0 KiB
Swift
42 lines
1.0 KiB
Swift
//
|
|
// SDLLogger.swift
|
|
// Tun
|
|
//
|
|
// Created by 安礼成 on 2024/3/13.
|
|
//
|
|
import Foundation
|
|
import os
|
|
|
|
public class SDLLogger: @unchecked Sendable {
|
|
|
|
public enum Subsystem: String, CaseIterable {
|
|
case punchnet = "com.jihe.punchnet"
|
|
case debug = "com.jihe.punchnet.debug"
|
|
case trace = "com.jihe.punchnet.trace"
|
|
}
|
|
|
|
private static var loggers: [String: SDLLogger] {
|
|
var loggers: [String: SDLLogger] = [:]
|
|
for sub in Subsystem.allCases {
|
|
loggers[sub.rawValue] = .init(subsystem: sub)
|
|
}
|
|
return loggers
|
|
}
|
|
|
|
private let log: Logger
|
|
|
|
private init(subsystem: Subsystem) {
|
|
self.log = Logger(subsystem: subsystem.rawValue, category: "punchnet")
|
|
}
|
|
|
|
public func _log(_ message: String) {
|
|
self.log.info("\(message, privacy: .public)")
|
|
}
|
|
|
|
public static func log(_ message: String, for system: Subsystem = .punchnet) {
|
|
if let logger = loggers[system.rawValue] {
|
|
logger._log(message)
|
|
}
|
|
}
|
|
}
|