Log: A lightweight logging framework written in Swift

log

License Swift Compatibility Platform Compatibility CI CodeCov GitHub release; latest by date GitHub commit activity

描述

Log 是一个使用 Swift 编写的轻量级日志框架。

用法

创建 logger 实例

首先,你需要创建一个 IPrinter 实例,该实例将消息打印到特定的输出,例如 XCode 的控制台或 Console 应用程序。log 包提供了预定义的打印器,用于在 XCode 控制台 (ConsolePrinter) 和系统控制台 (OSPrinter) 中打印消息。你也可以创建自己的打印器。为此,你的对象必须符合 IPrinterStrategy 协议并实现必要的方法。

import Log

let osPrinter = OSPrinter()
let consolePrinter = ConsolePrinter()

其次,创建一个 Logger 实例,并在定义日志级别时将这些打印器作为初始化参数传递。日志级别决定了要打印的日志消息级别。如果日志级别设置为特定级别,则所有具有不同日志级别的消息都将被忽略。要打印所有消息,请使用 .all

let log = Logger(
    printers: [osPrinter, consolePrinter],
    logLevel: .all
)
log.error(message: "test message")

格式化消息

每个 IPrinter 实例都有一个格式化器数组,这些格式化器负责格式化输入消息。log 包提供了预定义的前缀和时间戳格式化器。要使用这些格式化器,你需要将它们传递给打印器的初始化器。

let osPrinter = OSPrinter(formatters: [PrefixFormatter(name: "your prefix here")])
...
log.fault(message: "message") // "🚨🚨🚨 [your prefix here] => message"

以下是预定义的格式化器列表

格式化器 描述
PrefixLogFormatter 向打印的消息添加指定的前缀
TimestampLogFormatter 根据日期格式在打印的消息前添加时间戳

自定义格式化器

如果你想创建自定义消息格式化器,你的对象必须符合 ILogFormatter 协议并实现必要的方法。

struct MyCustomMessageFormatter: ILogFormatter {
    func format(message: String, with logLevel: LogLevel) -> String {
        // your implementation here
    }
}

要求

安装

Swift Package Manager

Swift Package Manager 是一个用于自动化 Swift 代码分发的工具,并已集成到 swift 编译器中。它尚处于早期开发阶段,但 log 确实支持在受支持的平台上使用它。

一旦你设置好 Swift 包,添加 log 作为依赖项就像将其添加到你的 Package.swiftdependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/space-code/log.git", .upToNextMajor(from: "1.2.0"))
]

交流

贡献

引导开发环境

make bootstrap

请随时帮助这个项目!如果你发现有什么可以改进的地方或想要新功能,请打开一个 issue 或发送一个 Pull Request!

作者

Nikita Vasilev, nv3212@gmail.com

许可证

log 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。