如何使用 Apple Watch 的 os_log 访问过去一天的日志?

Posted

技术标签:

【中文标题】如何使用 Apple Watch 的 os_log 访问过去一天的日志?【英文标题】:How do I access logs from the past day with os_log from Apple Watch? 【发布时间】:2021-03-06 01:11:43 【问题描述】:

我正在尝试解决 watchOS 上的问题。

我不确定如何重现我看到的问题,但我在野外真实设备上进行测试时偶尔会遇到它,所以我尝试使用os_log 来诊断问题事后。

作为第一步,为了确保我了解如何写入日志并在以后访问它,我尝试在应用首次加载时记录一个事件。

在我的应用程序的 ExtensionDelegate.swift 文件中,我添加了以下内容:

import os.log

extension OSLog 
    private static var subsystem = Bundle.main.bundleIdentifier!
    
    static let health = OSLog(subsystem: subsystem,
                              category: "health")

然后,我用这个更新了applicationDidBecomeActive 委托函数:

func applicationDidBecomeActive() 
    os_log("App Started",
           log: OSLog.health,
           type: .error)

我知道这不是真正的错误消息,但根据我的阅读,不是.error 的消息不会写入日志以供以后使用。我想确保它像真正的错误一样被写入日志。

我安装了the sysdiagnose profile,然后安装了我的应用程序的最新版本。

在测试了一天的应用程序后,我尝试导出文件。按照我在其他地方找到的说明,我在 Apple Watch 上进行了系统诊断,方法是按住 Digital Crown 和 Side 按钮两秒钟(释放时感觉到触觉反馈)。

然后,我按照the instructions here 将手表放在充电器上几分钟,建议 15 分钟。

我在配对的 iPhone 上打开了 Watch 应用,然后转到常规 > 诊断日志并从 Apple Watch 下载 sysdiagnose,然后使用 AirDrop 将其发送到我的计算机。

这给了我一个 tarball 文件(例如,sysdiagnose_2021.03.05_17-01-57-0700_Watch-OS_Watch_18S801.tar.gz)。解压缩后,我有一个包含大量文件和子文件夹的文件夹。

在这个文件夹中四处寻找之后,我认为最好的办法是查看 system_logs.logarchive 文件。我在 macOS Console 应用程序中打开了它,将 Showing 下拉菜单设置为 All Messages,然后查看了我打开应用程序的时间。我没有从我的应用中看到任何日志输出。

我还过滤了“应用已启动”(来自我的应用的日志消息),但没有找到任何内容。

然后,我按类别过滤“健康”,但没有找到我记录的事件。

system_logs.logarchive 是从我的应用程序中查找日志输出的正确位置吗?

如果没有,我应该在哪里寻找?还是我做错了什么?

我真的很想更好地了解如何在 Apple Watch 上记录消息,以便稍后查看它们,从而使我的 Apple Watch 应用程序更强大,但我走入了死胡同。

我找错地方了吗?还是我设置的日志记录错误?或者是别的什么?我将不胜感激任何有关这方面的指导!

【问题讨论】:

【参考方案1】:

根据 Apple Dev Forms,sysdiagnose 允许您在 Apple Watch 上查看日志。

【讨论】:

是的,这就是我所描述的,但是我在哪里可以找到实际的日志输出?

以上是关于如何使用 Apple Watch 的 os_log 访问过去一天的日志?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中创建 Apple Watch 应用或配置 Apple Watch 应用

如何在没有 Apple Watch 应用的情况下使用 cordova 在 Apple Watch 上获取 iPhone 应用的推送通知?

当 Apple Watch 处于后台状态或睡眠模式时,我们如何从 iphone 向 Apple Watch 发送消息?

如何在 Apple-Watch 上获取 iPhone 日历事件提醒

如何将用户从 Apple Watch 通知转移到 Apple Watch App?

如何识别 Apple Watch 应用中的手势?