1

我正在使用 Apple 的os.log框架创建日志。我只是在制作如下日志:

os_log("Update: Lat: %{public}f | Long:  %{private}f | RemainingTime: %{public}f ", log: log, type: .default, location.coordinate.latitude, location.coordinate.longitude, UIApplication.shared.backgroundTimeRemaining).

我确实在控制台和调试器中看到了日志。

我已经阅读了这篇文章,并且能够成功下载容器(只是不确定容器是否包含我要查找的内容,或者这是否是查看的正确位置)。然后我点击显示包:

但在那之后我只看到:

在此处输入图像描述

我查看了所有文件。这些文件只包含以下数字:

在此处输入图像描述

我应该做一些额外的事情还是我找错地方了?


EDIT1:在日航的建议之后:

我查看了(文档,库,tmp)。有plistktx文件。和function.data&map.data文件。

我查看了这些文件:

在此处输入图像描述

还有这些文件:

在此处输入图像描述

我尝试使用控制台打开它们,但得到如下图所示的乱码结果:

在此处输入图像描述


编辑2:

所以首先我没有权限打开/var/db/diagnostics,我必须这样做sudo bash。然后我做了cd /var/db/diagnostics并看到了这些文件。

Events
FaultsAndErrors
Oversize
SpecialHandling
StateDumps
TTL
logdata.Persistent.20170724T212501.tracev3
logdata.Persistent.20170725T015616.tracev3
logdata.Persistent.20170725T134017.tracev3
logdata.Persistent.20170725T171020.tracev3
logdata.Persistent.20170725T213354.tracev3
logdata.Persistent.20170726T002702.tracev3
logdata.Persistent.20170726T144412.tracev3
logdata.Persistent.20170726T202128.tracev3
logdata.Persistent.20170727T021506.tracev3
logdata.Persistent.20170727T033929.tracev3
logdata.Persistent.20170727T075325.tracev3
logdata.Persistent.20170727T145233.tracev3
logdata.statistics.0.txt
logdata.statistics.1.txt
shutdown.log

然后我做了open -a console logdata.Persistent.20170725T015616.tracev3(我也尝试了其他.tracev3文件),但是控制台刚刚打开并开始实时跟踪,就像我刚刚正常打开控制台一样......

4

2 回答 2

5

您没有在问题中指定 iOS、macOS 或 tvOS,因此我的答案在所有平台上保持通用。

查看WWDC 2016 - Session 721 - 统一日志记录和活动跟踪

日志数据以新的压缩二进制格式(.tracev3.logarchive文件)存储,这就是那些“数字”。您必须使用 Console.app 或log命令行工具来打开这些文件。

您在错误的位置查找日志文件。从会议视频:

这些文件现在存储在 /var/db/diagnostics 下,其他支持文件存储在 /var/db/uuidtext 中。有新的工具可以访问这些数据,有一个新的控制台,一个新的日志命令行工具,您必须记住的一件事是因为数据现在以二进制格式存储,您必须使用新工具才能访问它。因此,您不能再通过日志进行 grep,您必须使用我们的工具来浏览它。

还有另一种新类型的文件 .logarchive,用于日志数据的可移植性。本质上,.logarchive 是来自 /var/db/diagnostics 的信息集合,您将 uuidtext 收集到一个文件中,该文件更容易传输到电子邮件、附加到错误报告等。

如果您将 stdout 或 stderr 重定向到文件(例如本示例中的代码),它应该位于应用程序沙箱的 Documents 目录(或您指定的任何目录)中。在 iOS 和 tvOS 上,最终用户通常无法使用写入 /var/db/diagnostics 的日志。

于 2017-07-27T16:16:39.463 回答
4

选项A:无需任何特定设置即可远程检索日志。

  • 触发sysdianose
  • 使用 Airdrop 并将 sysdiagnose 共享到您的 mac
  • 取消归档 sysdiagnose 文件。它看起来像这样:

在此处输入图像描述

  • system_logs.logarchive用 Console.app打开
  • 就好像您已连接到 Console.app。您可以按子系统、日志级别、类别和时间进行过滤。它看起来像这样:

在此处输入图像描述

注意:搜索和过滤非常慢。有时需要 2 分钟。如果您过滤掉您不关心的日期,这可能会有所帮助。您可以使用底部的文件管理器来做到这一点。您必须等到右下角的加载存档微调器完成加载

选项B:重定向它们以存储在您的应用沙箱中

在遵循这个答案的建议之后,我能够将日志重定向到我的应用程序沙箱的文档目录中,然后我能够使用这个答案下载我的容器/沙箱。

单击显示包内容后,我得到了这个:

在此处输入图像描述

我使用控制台打开了日志文件,得到的结果是:

在此处输入图像描述

经度应该显示为,private但由于我让它通过 Xcode 运行,即调试模式,该字段仍然被公开。


于 2017-07-28T20:32:17.597 回答