使用新的swift os_log api

时间:2016-10-26 22:09:25

标签: ios swift logging deprecated asl

在iOS 10.0中不推荐使用:os_log(3)已替换为asl(3)

所以iOS 10.0显然弃用了asl(Apple System Log)api,并用非常有限的os_log api替换它。

我使用类似于下面代码片段的内容来读取正在运行的应用程序的日志写入,以便在应用程序的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/很好地解释了将来登录会发生什么。最大的赠品是日志以某种压缩格式存储,并且只能由新的控制台应用程序扩展。这几乎使我的任务无望。

视频中的人(Steve Szymanski)提及"所有ASL日志记录API都被新的API"和#34;用于搜索新日志数据的新API将不会在此版本中公开。又名asl_search。而这正是我所寻找的!

他还提到了我即将推出的快速API。

1 个答案:

答案 0 :(得分:12)

您似乎需要使用增强型控制台而不是自己的日志查看器。日志被压缩,直到查看才会展开 - 这使得日志记录在调试级别上的侵入性降低。但是,日志没有文本形式。

请参阅2016 WWDC视频会话721“统一记录和活动跟踪”https://developer.apple.com/videos/play/wwdc2016/721/

演示新方法的Apple示例应用程序还有一个未记录的构建设置,我必须添加到我的iOS应用程序中。请参阅'Paper Company(Swift)'iOS应用程序中的设置。 该设置位于顶级xCode窗口的Targets部分。这些是我遵循的步骤:

  1. 在Build Settings页面上,在“User-Defined”中添加一个新部分= ASSETCATALOG_COMPRESSION。

  2. 在其下添加两行:

  3. 调试=无损

    发布=尊重资产目录

    添加此构建设置后,根据视频会话演示在我的应用中进行了日志记录。