如何使用统一日志记录系统从远程 iOS 设备查看日志?

Dan*_*lan 8 ios swift oslog swiftui ios15

首先,重要的是要知道OSLogStore 在 iOS 中不起作用就在 4 个月前,由于那是最近的事,而且文档又非常稀少,一年前可能正确的内容今天可能并不正确。

\n

这是我的问题的一些背景(几乎是从这个 reddit 帖子中盗来的):

\n
\n

我开发的开源应用程序大约有 1000 个用户,用户时不时会报告一些奇怪的行为。

\n

该应用程序使用[记录器 ] 来记录重要事件...是否可以使用远程日志记录服务,以便我可以获取此信息并为用户解决问题?

\n
\n

我只关心是否有统一的日志系统是否有解决这个问题的方法。假设我能够与具有“奇怪行为”的用户交谈,并且他们不是技术人员。

\n

我得到了一些提示,表明 OSLogStore 可能是一种获取远程日志的方法,但官方文档太少了,我无法判断。具体来说,init(url:)看起来很有趣,但也许它只接受file://协议或其他东西。

\n

日志记录文档说它可以用于“当您无法将调试器附加到应用程序时,例如当您\xe2\x80\x99在用户\xe2\x80\x99s机器上诊断问题时”,但没有任何地方说这个怎么做。

\n

Dan*_*lan 2

回复:@RobNapier 对原始帖子的评论说,\xe2\x80\x9c唯一的问题是你是否可以从远程设备上注销......甚至这也相当棘手。\xe2\x80\x9d 我我开始认为OSLogStore只获取本地日志,但这使您能够将它们发送到任何地方,或者用它们做任何您想做的事情,真的。

\n

现在,这OSLogStore适用于 iOS,您可以在应用程序中放置一个标记为“将日志发送到开发人员”的按钮,单击该按钮会将日志发送到服务器上的自定义端点。这需要两个步骤:

\n
    \n
  1. 获取本地日志。

    \n

    您链接的文章的另一部分说:

    \n
    \n

    通过 OSLogStore,Apple 添加了一个 API 来以编程方式访问日志存档。它允许访问 OSLogEntryLog,其中包含您可能需要的所有日志信息。...让\xe2\x80\x99s 看看它是如何工作的:

    \n
    \n
     func getLogEntries() throws -> [OSLogEntryLog] {\n     let subsystem = Bundle.main.bundleIdentifier!\n     // Open the log store.\n     let logStore = try OSLogStore(scope: .currentProcessIdentifier)\n\n     // Get all the logs from the last hour.\n     let oneHourAgo = logStore.position(date: Date().addingTimeInterval(-3600))\n\n     // Fetch log objects.\n     let allEntries = try logStore.getEntries(at: oneHourAgo)\n\n     // Filter the log to be relevant for our specific subsystem\n     // and remove other elements (signposts, etc).\n     return allEntries\n         .compactMap { $0 as? OSLogEntryLog }\n         .filter { $0.subsystem == subsystem }\n }\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. 将它们发送到服务器上的自定义端点。通过代码库中的该函数,我认为您可以像这样使用它:

    \n
     let logs = getLogEntries();\n sendLogsToServer(deviceId, appVersion, ..., logs); // this is your implementation\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
\n

让我犹豫的一件事是 @RobNapier 说“从远程设备注销......是相当棘手的”。这让我觉得我缺少了一些东西。希望@RobNapier 能指出我想法中的缺陷。

\n

  • 当我上次使用它时,它实际上不会给你任何记录。试一试。 (2认同)

归档时间:

查看次数:

3291 次

最近记录:

3 年,9 月 前