【问题标题】:What is os.log for?os.log 是干什么用的?
【发布时间】:2017-11-03 01:45:34
【问题描述】:

我正在阅读一些关于如何构建简单应用程序的 Swift 教程,因为我刚刚开始编写代码。我想让我的应用程序与 iOS 9 兼容,因为我有 iPad 3。但是,所有 os.log 语句都会在 Xcode 中生成一个错误,告诉我在任何 os.log 语句之前添加一个 if #avaliable 语句。 os.log 有什么作用,如果我需要它,使用if #avaliable 语句来兼容 iOS 9 是否存在问题?如果不是,那么在if #avaliable 语句之后的else 语句中,iOS 9 的等效代码是什么?谢谢。

【问题讨论】:

  • 你读过the documentation吗?
  • @rmaddy,是的,我已经阅读了文档,并且我看到它是用于记录的,但是它记录了什么?基本错误、应用行为等等?什么是 iOS 9 等价物?
  • 它会记录您告诉它的内容 :) – 仍然有 NSLog(),虽然不够灵活,但适用于所有操作系统版本。
  • @MartinR 那么它基本上是用于调试应用程序崩溃之类的吗?
  • 看苹果官网教程,是用log来持久化数据,哼developer.apple.com/library/content/referencelibrary/…

标签: ios swift logging oslog


【解决方案1】:

来自Apple's documentation

统一日志记录在 iOS 10.0 及更高版本、macOS 10.12 和 更高版本、tvOS 10.0 及更高版本、watchOS 3.0 及更高版本,并取代 ASL(Apple 系统记录器)和 Syslog API。从历史上看,日志 消息被写入磁盘上的特定位置,例如 /etc/system.log。统一的日志系统将消息存储在内存中 并在数据存储中,而不是写入基于文本的日志文件。

没有 iOS9 等价物。您可以使用非常流行的第三方日志记录工具,例如CocoaLumberjack

作为如何使用此日志记录的具体示例:

if #available(iOS 10.0, *) {
    let bundleID:String = Bundle.main.bundleIdentifier ?? "unknown"
    let oslog = OSLog(subsystem: bundleID, category: "Model")
    os_log("%@", log: oslog, type: .info, message)
}

【讨论】:

  • 那么它基本上是用于调试应用程序崩溃之类的吗?
  • @TonyStark4ever 它是一个高级 NSLog / Print,您可以在其中过滤和分类数据。
猜你喜欢
  • 1970-01-01
  • 2016-10-30
  • 2014-12-20
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多