SimpleLogger

一个简单的 Swift 6 日志库,提供易于使用的日志功能,支持不同的日志级别和后端。

特性

要求

安装

Swift Package Manager

将包添加到您的 Package.swift 文件

dependencies: [
    .package(url: "https://github.com/fatbobman/SimpleLogger.git", from: "0.0.1")
]

然后在您的代码中导入该模块

import SimpleLogger

用法

创建 Logger

默认 OS Logger

let logger: LoggerManagerProtocol = .default(subsystem: "com.yourapp", category: "networking")

控制台 Logger

let logger: LoggerManagerProtocol = .console()

记录消息

logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")

自定义 Logger 后端

遵循 LoggerBackend 协议以创建自定义后端

public protocol LoggerBackend: Sendable {
    var subsystem: String { get }
    var category: String { get }
    func log(level: LogLevel, message: String, metadata: [String: String]?)
}

示例

struct CustomLoggerBackend: LoggerBackend {
    let subsystem: String = "Custom Logger"
    
    func log(level: LogLevel, message: String, metadata: [String: String]?) {
        // Custom logging implementation
    }
}

禁用日志

设置 DisableLogger 环境变量以禁用日志记录

ProcessInfo.processInfo.environment["DisableLogger"] = "true"

示例

使用默认 Logger

import SimpleLogger

let logger: LoggerManagerProtocol = .default(subsystem: "com.example.app", category: "general")
logger.info("App started")

使用控制台 Logger

import SimpleLogger

let logger: LoggerManagerProtocol = .console()
logger.debug("Debugging information")

自定义 Logger 测试

struct CustomLogger: LoggerManagerProtocol {
    let expect: @Sendable (String, LogLevel) -> Void
    
    func log(_ message: String, level: LogLevel, file: String, function: String, line: Int) {
        expect(message, level)
    }
}

let logger: LoggerManagerProtocol = CustomLogger(expect: { msg, level in
    #expect(msg == "Hello, World!")
    #expect(level == .info)
})
logger.info("Hello, World!")

许可证

本项目基于 MIT 许可证。 详情请参阅 LICENSE 文件。