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