适用于Swift的Apple推荐日志记录方法

use*_*037 16 xcode error-logging ios swift oslog

注意:

这不是链接问题的重复

目标:

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

目前的实施:

目前我正在使用print具有一些全局功能的语句

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

Hon*_*ney 30

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

例:

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)
Run Code Online (Sandbox Code Playgroud)

一些很好的参考:

原因os_log是如此强大是因为:

  • 提供不同的日志级别
  • 有不同的类别
  • privatepublic日志
  • 它重量轻,由Apple制造.不需要豆荚
  • 不像print是在调试过程中唯一可用的,os_log可以用于窥视到一个释放的应用程序(实时)和查看日志在控制台应用程序.

在此输入图像描述

这非常适合观察应用程序生命周期的变化而不用贪婪的Xcode.Xcode不允许应用程序处于暂停状态......


注意: os_log仅适用于+ iOS10

  • 使用os_log的一个问题是,您无法传递动态字符串,因此您无法将其隐藏在自己的调试函数中,该调试函数从外部获取参数。您必须在代码中显式使用它,例如:os_log(“用户%{PRIVATE} @已登录”,日志:OSLog.userFlow,类型:.info,用户名)有缓解此https://的12/2018建议forums.swift.org/t/custom-string-interpolation-and-compile-time-interpretation-applied-to-logging/18799/7 (2认同)