使用新的swift os_log api读取日志

在iOS 10.0中弃用:os_log(3)已经取代asl(3)

所以iOS 10.0显然不赞成使用asl(Apple System Log)API,而是用非常有限的os_log apireplace它。

我使用类似于下面的代码片段的内容来读取正在运行的应用程序的日志写入,以在应用程序的uitextview中显示 – 现在它充满了弃用警告。 有谁知道用新的os_log api读取打印日志的方法吗? 因为我只看到一个写作的API( https://developer.apple.com/reference/os/1891852-logging )。

import asl let query = asl_new(UInt32(ASL_TYPE_QUERY)) let response = asl_search(nil, query) while let message = asl_next(response) { var i: UInt32 = 0 let key = asl_key(message, i) print(asl_get(message, key)) ... } 

@Will Loew-Blosser的回答后编辑

https://developer.apple.com/videos/play/wwdc2016/721/很好地解释了将来会发生什么事情。 最大的好处是日志会被压缩成一些压缩格式,并且只能通过新的控制台应用程序进行扩展。 这几乎使我的使命变得绝望。

video中的这个人(Steve Szymanski)提到“所有的ASL日志API都被新的API取代”,“新的日志数据API将不会在这个版本中公开”,也就是asl_search 。 而那正是我所期待的!

他还提到了一个快速的API我来了。

看起来您需要使用增强的控制台,而不是您自己的日志查看器。 日志被压缩,直到查看才被扩展 – 这使得日志logging在debugging级别上的侵入性要小得多。 没有文本forms的日志,但是。

查看2016年WWDCvideo会议721“统一日志和活动跟踪” https://developer.apple.com/videos/play/wwdc2016/721/

此外,演示新方法的苹果示例应用程序还有一个未logging的构build设置,我必须添加到我的iOS应用程序。 请参阅“Paper Company(Swift)”iOS应用程序中的设置。 该设置位于顶层xCode窗口的“目标”部分。 这些是我遵循的步骤:

  1. 在生成设置页面添加“用户定义”一个新的部分= ASSETCATALOG_COMPRESSION。

  2. 在它下面添加两行:

debugging=无损

发布=尊重资产目录

添加这个构build设置后,logging工作在我的应用程序按照video会话演示。