问题 使用新的swift os_log api读取日志


在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取代”和“用于搜索新日志数据的新API将不会在此版本中公开” asl_search。而这正是我所寻找的!

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


3000
2017-10-26 22:09


起源



答案:


看起来您需要使用增强型控制台而不是您自己的日志查看器。日志被压缩,直到查看才会展开 - 这使得日志记录在调试级别上的干扰更少。但是没有日志的文本形式。

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

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

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

  2. 在它下添加两行:

调试=无损

发布=尊重资产目录

添加此构建设置后,根据视频会话演示,我的应用程序中的日志记录工作。


11
2017-11-22 14:28



视频和演示给了我更多的见解。我已经更新了我的问题。谢谢。 - MartinR


答案:


看起来您需要使用增强型控制台而不是您自己的日志查看器。日志被压缩,直到查看才会展开 - 这使得日志记录在调试级别上的干扰更少。但是没有日志的文本形式。

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

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

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

  2. 在它下添加两行:

调试=无损

发布=尊重资产目录

添加此构建设置后,根据视频会话演示,我的应用程序中的日志记录工作。


11
2017-11-22 14:28



视频和演示给了我更多的见解。我已经更新了我的问题。谢谢。 - MartinR