Hon*_*ney 1 xcode logging swift 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).
Run Code Online (Sandbox Code Playgroud)
我确实在控制台和调试器中看到了日志。
我已阅读此内容,并且成功下载了该容器(只是不确定该容器是否包含我要查找的内容,或者这是否是查看的正确位置)。然后我单击“显示包”:
但之后我只看到:
我查看了所有文件。这些文件只包含以下数字:
我应该做一些额外的事情还是我找错了地方?
EDIT1:根据日航的建议:
我调查了(文档、图书馆、tmp)。有plist和ktx文件。和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
Run Code Online (Sandbox Code Playgroud)
然后我做了open -a console logdata.Persistent.20170725T015616.tracev3(我.tracev3也尝试了其他文件),但控制台只是打开并开始实时跟踪,就像我刚刚正常打开控制台一样......
您在问题中没有指定 iOS、macOS 或 tvOS,因此我的答案在所有平台上保持通用。
查看WWDC 2016 - 第 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 的日志。
system_logs.logarchive使用 Console.app打开注意:搜索和过滤速度相当慢。有时需要2分钟。如果您过滤掉您不关心的日期可能会有所帮助。您可以使用底部的文件管理器来做到这一点。您必须等到右下角的加载存档旋转器完成加载
按照此答案的建议后,我能够将日志重定向到我的应用程序沙箱的文档目录中,然后我能够使用此答案下载我的容器/沙箱。
当我点击显示包内容后,我看到了:
我使用控制台打开日志文件,得到的结果是:
经度应该显示为,private但由于我让它通过 Xcode 即调试模式运行,该字段仍然呈现为公共。