From 1042b5c724a97599997ad3bae7ffe6ab7e81e3db Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Thu, 21 May 2026 18:30:13 +0800 Subject: [PATCH] fix loggers --- Tun/Diagnostics/SDLLogger.swift | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Tun/Diagnostics/SDLLogger.swift b/Tun/Diagnostics/SDLLogger.swift index c003261..1060228 100644 --- a/Tun/Diagnostics/SDLLogger.swift +++ b/Tun/Diagnostics/SDLLogger.swift @@ -14,13 +14,11 @@ public class SDLLogger: @unchecked Sendable { 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 static let debugLoggingEnabled = ProcessInfo.processInfo.environment["SDL_DEBUG_LOG"] != "0" + private static let traceLoggingEnabled = ProcessInfo.processInfo.environment["SDL_TRACE_LOG"] == "1" + private static let loggers: [Subsystem: SDLLogger] = { + Dictionary(uniqueKeysWithValues: Subsystem.allCases.map { ($0, SDLLogger(subsystem: $0)) }) + }() private let log: Logger @@ -32,9 +30,20 @@ public class SDLLogger: @unchecked Sendable { self.log.info("\(message, privacy: .public)") } - public static func log(_ message: String, for system: Subsystem = .debug) { - if let logger = loggers[system.rawValue] { - logger._log(message) + public static func log(_ message: @autoclosure () -> String, for system: Subsystem = .debug) { + guard self.isEnabled(system), let logger = loggers[system] else { + return + } + + logger._log(message()) + } + + private static func isEnabled(_ system: Subsystem) -> Bool { + switch system { + case .debug: + return self.debugLoggingEnabled + case .trace: + return self.traceLoggingEnabled } } }