Files
e-party-iOS/yana/Managers/LogManager.swift
edwinQQQ 128bf36c88 feat: 更新依赖和项目配置,优化代码结构
- 在Package.swift中注释掉旧的swift-composable-architecture依赖,并添加swift-case-paths依赖。
- 在Podfile中将iOS平台版本更新至16.0,并移除QCloudCOSXML/Transfer依赖,改为使用QCloudCOSXML。
- 更新Podfile.lock以反映依赖变更,确保项目依赖的准确性。
- 新增架构分析需求文档,明确项目架构评估和改进建议。
- 在多个文件中实现async/await语法,提升异步操作的可读性和性能。
- 更新日志输出方法,确保在调试模式下提供一致的调试信息。
- 优化多个视图组件,提升用户体验和代码可维护性。
2025-07-17 18:47:09 +08:00

145 lines
3.8 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}
}