如何打开/查看存储在设备上的iOS OSLog?

时间:2017-07-27 14:31:43

标签: swift xcode logging oslog

我使用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).

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

我已阅读this并且我已成功下载容器(只是不确定容器是否包含我正在寻找的内容,或者这是否是正确的位置看着)。然后我点击Show packages:

但之后我才看到:

enter image description here

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

enter image description here

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

EDIT1:在JAL的建议之后:

我调查了(Documents,Library,tmp)。有plistktx个文件。和function.data& map.data个文件。

我查看了这些文件:

enter image description here

以及这些文件:

enter image description here

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

enter image description here

EDIT2:

所以首先我没有权限打开/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个文件),但控制台只是打开并开始实时跟踪,好像我刚刚正常打开控制台...

2 个答案:

答案 0 :(得分:4)

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

审核WWDC 2016 - Session 721 - Unified Logging and Activity Tracing

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

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

  

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

     

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

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

答案 1 :(得分:4)

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

点击展示包装内容后,我就有了这个:

enter image description here

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

enter image description here

经度应该显示为private但是因为我已经通过Xcode,即调试模式仍然将该字段公开。

您还可以远程检索日志而无需任何特定设置。

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

enter image description here

  • 使用Console.app
  • 打开system_logs.logarchive
  • 就像你连接到Console.app一样。您可以按子系统,日志级别,类别和时间进行筛选。它看起来像这样:

enter image description here