从 iOS 设备获取统一系统日志

Posted

技术标签:

【中文标题】从 iOS 设备获取统一系统日志【英文标题】:Getting unified system logs from an iOS device 【发布时间】:2018-11-06 21:59:31 【问题描述】:

我正在尝试使用统一日志记录来记录消息并从设备中检索它们以进行检查。我用

创建了一个新的OSLog 实例
let logDebug = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "⚠️ debug")

然后我用

记录消息
os_log("%@", log: logDebug, type: OSLogType.debug, String(format:message, arguments: formatArgs))

这在 Xcode 控制台中运行良好。应该可以通过

从 Xcode 设备中检索这些日志 进行系统诊断(如Apple explains here) 将 sysdiagnose 传输到 Mac,然后 使用 Console.app 或 log 命令行工具检查日志(在 system_logs.logarchive 中)。

当我这样做时,我的任何日志都不会显示。没有显示具有预期子系统(捆绑 ID)的日志。

然而,如果我直接通过grepvim 检查system_logs.logarchive 中的日志文件,则会出现这些消息。所以它们在日志中,但出于某种原因,Console.app 和 log 都不会显示它们。我确保 Console.app 设置为显示“所有消息”并且我没有输入任何搜索字词。

我遗漏了哪一步,或者哪些细节需要有所不同?

【问题讨论】:

【参考方案1】:

您似乎对OSLogType.debug 不满意。控制台无法显示此类日志。

但其他人工作完美。 请尝试然后在控制台应用程序中检查它们。 os_log("%@", log: logDebug, type: OSLogType.info, String(format:"%i", arguments: [1]))

os_log("%@", log: logDebug, type: OSLogType.error, String(format:"%i", arguments: [1]))

甚至:

os_log("%@", log: logDebug, type: OSLogType.default, String(format:"%i", arguments: [6]))

【讨论】:

以上是关于从 iOS 设备获取统一系统日志的主要内容,如果未能解决你的问题,请参考以下文章

iOS应用崩溃日志分析

可以从 iOS 设备获取多少小时的日志/控制台日志?

iOS测试常见崩溃

OSGI的系统服务

「信息安全产品」综合日志分析系统

systemd的统一日志记录系统journalctl,助力问题定位