概述

一个快速的日志记录库,与 SwiftLog 集成。

安装

Occurrence 使用 Swift Package Manager 分发。 要将其安装到项目中,请使用 Xcode 的“Swift Packages”菜单或将其作为依赖项添加到您的 Package.swift 清单中。

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/richardpiazza/Occurence.git", .upToNextMinor(from: "0.6.0"))
    ],
    ...
)

然后,在任何您想使用它的地方导入 Occurrence 包。

import Occurrence

用法

在您的应用程序初始化期间,调用 Occurrence.bootstrap()。 这会将 Swift LoggingSystem 配置为使用 Occurrence 作为 LogHandler

为了方便创建 Logger 引用,请使用 LazyLogger 属性包装器,它将使用特定的标签(Logger.Subsystem)创建一个 Logger。

@LazyLogger("LoggerLabel") var logger: Logger

Occurrence 还提供了观察日志记录事件发生的能力。 这在需要将条目代理到第三方服务的情况下也很有用。

// Combine
Occurrence.logStreamer
    .publisher
    .sink { entry in
        // process entry
    }

// async/await
let task = Task {
    for await entry in Occurrence.logStreamer.stream {
        // process entry
    }
}

便捷功能

Occurrence 具有许多便捷功能,可增强整体日志记录体验。

LoggableError 协议提供了一种将错误轻松转换为 Logger.Metadata 表示形式的方法。 Logger 实例也有扩展,允许直接传递 LoggableError 实例。

@LazyLogger("MyApp") var logger: Logger

enum AppError: LoggableError {
  case badData
}

func throwingFunction() throws {
  guard condition else {
    throw logger.error("Condition not met.", AppError.badData)
  }
}