21

笔记:

这不是链接问题的重复

目标:

  • 我不是在找一个printvsNSLog差异
  • 事实上我不想使用它们中的任何一个(目前使用print
  • 我正在寻找Apple推荐的方式,只是似乎找不到命令/文档,我只知道它存在。

目前的实施:

目前我正在使用print带有一些全局函数的语句

问题

  1. 处理错误的推荐方式/方法是什么(我不想使用 NSLog,因为它们会写入设备的控制台)
  2. 这仅用于开发期间的调试目的
4

1 回答 1

32

看看os_log。它提供了您正在寻找的所有东西。

新的东西

自 iOS14 起提供更易于使用的Logger API。也见这里

从 iOS15 开始,您还可以使用OSLogStore . 看这里


免责声明:

我强烈建议您从 Swift 论坛中查看此主题。tl;博士

尽管它是 Apple 的建议,但由于对检索日志的担忧,它的使用存在争议:

  • 检索日志不是一个简单的过程。其实很难。看这里
  • 对于大多数用户来说,日志文件可以是 100-300 Mbs。这使得它很难发送。

它非常适合在开发过程中进行调试,但很难由您的应用用户触发、检索和发送。


例子:

let customLog = OSLog(subsystem: "com.your_company.your_subsystem_name", category: "Category")
os_log("This is info that may be helpful during development or debugging.", log: customLog, type: .debug)

一些很好的参考:

  • WWDC 2016 统一日志和跟踪
  • 罗布的这个回答。他讨论了NSLog已弃用的内容以及使用新 os_log库的一些好处。
  • 您还可以使用此处提到的方法获取日志。确定你看到了吗?答案。

之所以os_log如此强大,是因为:

  • 提供不同的日志级别
  • 有不同的类别
  • privatepublic日志
  • 它重量轻,由 Apple 制造。不需要豆荚
  • print仅在调试期间可用不同,os_log可用于查看已发布的应用程序(实时)并查看控制台应用程序中的日志。

在此处输入图像描述

这对于观察应用程序生命周期的变化非常有用,即如果您在连接到 Xcode 时正在调试,那么 Xcode 不允许应用程序处于挂起状态......


注: os_log仅适用于+iOS10

WWDC 2018 和 2019 也有新视频,但更关注os_signpost. 看:

于 2018-06-06T20:34:08.087 回答