如何使用 Unified Logging, Swift版
作者 Jared Sinclair 翻译者 Guanglei Liu
原文出处: https://www.bignerdranch.com/blog/migrating-to-unified-logging-swift-edition/
你是否正在考虑把所有的iOS 或者 macOS app 里面的 NSLog 或者 print 用最新的 Unified Logging system 替换掉呢?那么请你继续读下去,本文会给你一些相关的建议。
如果你还不太确定是否应该使用Unified Logging, 那么以下列出了一些使用他的优点。
1. 它是最新的规格。 Unified Logging system 是苹果平台最近几年最大的改善。它奠定了未来苹果平台使用 Logging 的具体方向。
2. 在没有牺牲任何功能的情况下提高了app的性能。最新的 Logging system 是一个全新设计的系统,用来减少传统的 Logging 系统所产生的 observer effect 影响。它在保持了原有的功能的基础提高了系统的性能。
3. .能够让你的Debugging流程更加方便。 使用最新的API,可以通过Console.app自定义subsystem并且分类, 利用 search filters 来显示或者隐藏 信息。 针对于 debug 很多个model 或者 process 的程序会带来很大的方便。
Unified Logging system 跟传统的 Logging 相比之下的四大优点
以下并没有全部列出每一个Unified Logging的改善,但是通过几个具体的例子来体现它跟之前的系统有什么本质上的不同。
1. OSLog不是function, 而是一个 data type
如果你把OSLog当成是一个function那你就错了。正如NSLog一样, 类似os_log 这样的function都是在<os/log.h>里面定义的。多数的function都是把 os_log_t ( 在 swift 里面就是 OSLog ) 作为一个argument. 在Console 软件里面,OSLog 和其他一些相关的信息结合在一起使用,来实现在搜索跟过滤的功能。
2. 必须使用Console 软件
当使用Unified Logging的时候输出结果并不是可读的,他们都是以不可读的格式写在硬盘里面的,只能通过以log archive的形式 在Console 软件里面打开(后文会介绍如何生成一个log archive)。 Console可以把log archive转化成一种方便搜索跟过滤的形式。 数据格式的不透明性可能是跟以往的Logging system 最大区别。苹果公司花了很大的心思去优化之前传统Logging system对系统的性能跟内存空间所造成的影响。
3. 把 StaticString 当成 log message
以下的Swift代码是无法编译的
let