
- 在Package.swift中注释掉旧的swift-composable-architecture依赖,并添加swift-case-paths依赖。 - 在Podfile中将iOS平台版本更新至16.0,并移除QCloudCOSXML/Transfer依赖,改为使用QCloudCOSXML。 - 更新Podfile.lock以反映依赖变更,确保项目依赖的准确性。 - 新增架构分析需求文档,明确项目架构评估和改进建议。 - 在多个文件中实现async/await语法,提升异步操作的可读性和性能。 - 更新日志输出方法,确保在调试模式下提供一致的调试信息。 - 优化多个视图组件,提升用户体验和代码可维护性。
145 lines
3.8 KiB
Swift
145 lines
3.8 KiB
Swift
import Foundation
|
||
|
||
/// 日志等级
|
||
public enum LogLevel: Int {
|
||
case verbose = 0
|
||
case debug
|
||
case info
|
||
case warn
|
||
case error
|
||
}
|
||
|
||
@MainActor
|
||
public class LogManager {
|
||
/// 单例
|
||
public static let shared = LogManager()
|
||
private init() {}
|
||
|
||
/// 日志输出
|
||
/// - Parameters:
|
||
/// - level: 日志等级
|
||
/// - message: 日志内容
|
||
/// - onlyRelease: 是否仅在 Release 环境输出(已修复逻辑)
|
||
public func log(_ level: LogLevel, _ message: @autoclosure () -> String, onlyRelease: Bool = false) {
|
||
#if DEBUG
|
||
// DEBUG 环境:如果 onlyRelease 为 true,则不输出;否则正常输出
|
||
if !onlyRelease {
|
||
print("[\(level)] \(message())")
|
||
}
|
||
#else
|
||
// RELEASE 环境:如果 onlyRelease 为 true,则输出;否则不输出
|
||
if onlyRelease {
|
||
print("[\(level)] \(message())")
|
||
}
|
||
#endif
|
||
}
|
||
|
||
/// 仅在 DEBUG 环境输出的日志(推荐使用)
|
||
/// - Parameters:
|
||
/// - level: 日志等级
|
||
/// - message: 日志内容
|
||
public func debugLog(_ level: LogLevel, _ message: @autoclosure () -> String) {
|
||
#if DEBUG
|
||
print("[\(level)] \(message())")
|
||
#endif
|
||
}
|
||
}
|
||
|
||
// MARK: - 原有快捷方法(保持向后兼容)
|
||
@MainActor
|
||
public func logVerbose(_ message: @autoclosure () -> String, onlyRelease: Bool = false) {
|
||
LogManager.shared.log(.verbose, message(), onlyRelease: onlyRelease)
|
||
}
|
||
|
||
@MainActor
|
||
public func logDebug(_ message: @autoclosure () -> String, onlyRelease: Bool = false) {
|
||
LogManager.shared.log(.debug, message(), onlyRelease: onlyRelease)
|
||
}
|
||
|
||
@MainActor
|
||
public func logInfo(_ message: @autoclosure () -> String, onlyRelease: Bool = false) {
|
||
LogManager.shared.log(.info, message(), onlyRelease: onlyRelease)
|
||
}
|
||
|
||
@MainActor
|
||
public func logWarn(_ message: @autoclosure () -> String, onlyRelease: Bool = false) {
|
||
LogManager.shared.log(.warn, message(), onlyRelease: onlyRelease)
|
||
}
|
||
|
||
@MainActor
|
||
public func logError(_ message: @autoclosure () -> String, onlyRelease: Bool = false) {
|
||
LogManager.shared.log(.error, message(), onlyRelease: onlyRelease)
|
||
}
|
||
|
||
// MARK: - 新的DEBUG专用快捷方法(推荐使用)
|
||
public func debugVerbose(_ message: @autoclosure () -> String) async {
|
||
let msg = message()
|
||
await MainActor.run {
|
||
LogManager.shared.debugLog(.verbose, msg)
|
||
}
|
||
}
|
||
|
||
public func debugLog(_ message: @autoclosure () -> String) async {
|
||
let msg = message()
|
||
await MainActor.run {
|
||
LogManager.shared.debugLog(.debug, msg)
|
||
}
|
||
}
|
||
|
||
public func debugInfo(_ message: @autoclosure () -> String) async {
|
||
let msg = message()
|
||
await MainActor.run {
|
||
LogManager.shared.debugLog(.info, msg)
|
||
}
|
||
}
|
||
|
||
public func debugWarn(_ message: @autoclosure () -> String) async {
|
||
let msg = message()
|
||
await MainActor.run {
|
||
LogManager.shared.debugLog(.warn, msg)
|
||
}
|
||
}
|
||
|
||
public func debugError(_ message: @autoclosure () -> String) async {
|
||
let msg = message()
|
||
await MainActor.run {
|
||
LogManager.shared.debugLog(.error, msg)
|
||
}
|
||
}
|
||
|
||
// fire-and-forget 同步重载(方法名加 Sync 后缀)
|
||
public func debugVerboseSync(_ message: @autoclosure () -> String) {
|
||
let msg = message()
|
||
Task {
|
||
await debugVerbose(msg)
|
||
}
|
||
}
|
||
|
||
public func debugLogSync(_ message: @autoclosure () -> String) {
|
||
let msg = message()
|
||
Task {
|
||
await debugLog(msg)
|
||
}
|
||
}
|
||
|
||
public func debugInfoSync(_ message: @autoclosure () -> String) {
|
||
let msg = message()
|
||
Task {
|
||
await debugInfo(msg)
|
||
}
|
||
}
|
||
|
||
public func debugWarnSync(_ message: @autoclosure () -> String) {
|
||
let msg = message()
|
||
Task {
|
||
await debugWarn(msg)
|
||
}
|
||
}
|
||
|
||
public func debugErrorSync(_ message: @autoclosure () -> String) {
|
||
let msg = message()
|
||
Task {
|
||
await debugError(msg)
|
||
}
|
||
}
|