Swift 如何打开/查看设备上存储的iOS OSLOG?

Swift 如何打开/查看设备上存储的iOS OSLOG?,swift,xcode,logging,oslog,Swift,Xcode,Logging,Oslog,我正在使用苹果的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).

我正在使用苹果的
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)。有
plist
ktx
文件。和
function.data
map.data
文件

我查看了这些文件:

还有这些文件:

我试着用控制台打开它们,但我得到了乱七八糟的结果,如下图所示:


EDIT2:

因此,首先我没有权限打开
/var/db/diagnostics
,我必须执行
sudobash
。然后我做了
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

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

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

复习

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

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
您在错误的位置查找日志文件。从会话视频中:

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

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


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

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

复习

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

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
您在错误的位置查找日志文件。从会话视频中:

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

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


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

按照answer的建议,我能够将日志重定向到我的应用程序沙箱的文档目录中,然后我能够使用answer下载我的容器/沙箱

单击“显示软件包内容”后,我发现:

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

经度应该显示为
private
,但因为我让它通过Xcode ie调试模式运行,所以该字段仍然是公共的


您还可以远程检索日志,而无需任何特定设置。
  • 触发一个事件
  • 使用Airdrop并将sysdiagnose共享到您的mac
  • 取消对sysdiagnose文件的归档。它将如下所示:

  • 使用Console.app打开
    系统日志.logarchive
  • 就好像你连接到了Console.app。您可以按子系统、日志级别、类别和时间进行筛选。它将如下所示:


注意:搜索和过滤相当慢。有时需要2分钟。如果你过滤掉那些你不在乎的日期,可能会有所帮助。您可以使用底部的文件管理器来实现这一点。您必须等待右下角的加载存档微调器完成加载

在遵循answer的建议后,我能够将日志重定向到我的应用程序沙盒的文档目录中,然后我能够使用answer下载我的容器/沙盒

单击“显示软件包内容”后,我发现: