OSLog 1.0.2

OSLog 1.0.2

Paul Calnan 维护。



OSLog 1.0.2

  • Rocket Insights

OSLog 框架

OSLog 框架提供了一组围绕 Apple 提供的原生 OSLog 功能的便利包装。

该框架通过 Log 类提供日志功能。每个日志级别都有一个函数。

  • Log.msg 发送默认级别的日志消息。
  • Log.debug 发送调试级别的日志消息。
  • Log.info 发送信息级别的日志消息。
  • Log.error 发送错误级别的日志消息。
  • Log.fault 发送故障级别的日志消息。

有一个名为 default 的静态 Log 实例。这对应于系统提供的 OSLog.default 对象。在 Log 类上提供了静态的日志函数,这些函数调用 Log.default 对象上的相应方法。

有关各种日志级别的描述和用途,请参阅 Apple 的 OSLog 文档。

客户端应用程序可以提供自己的 Log 类实例,指定自定义子系统名称(使用反向 DNS 表示法)和日志类别。Log 实例可以使用自定义的 LogFormatter 进行初始化,该格式器用于生成发送到日志的字符串。有关源文件、代码行号和源函数的相关上下文信息都提供给 LogFormatter 实例。

每个 Log 实例均可启用或禁用。Log 实例默认是禁用的。各种 Log 函数使用 @autoclosure 构造来评估要记录的消息。因此,如果禁用 Log 实例,则不会评估其消息。这消除了执行其他不必要的字符串展开所造成的任何开销。

客户端应用程序可以提供 Log 类的扩展,为每个子系统以及类别定义静态 Log 实例。例如:

import OSLog

extension Log {
    private static let subsystem = "com.example.ExampleApp"

    static let ui = Log(subsystem: subsystem, category: "ui")
    static let network = Log(subsystem: subsystem, category: "network")
}

然后应用程序可以使用这些记录器如下:

Log.ui.info("This is an info log message")

Log.network.isEnabled = false
Log.network.debug("This message will not appear as the logger is disabled")