设备控制台中仅显示崩溃日志

Posted

技术标签:

【中文标题】设备控制台中仅显示崩溃日志【英文标题】:Only Crash logs showing in Device Console 【发布时间】:2021-01-21 14:05:40 【问题描述】:

使用 Xcode 12 和 NSLog 记录我的消息。当我打开“窗口 -> 设备和模拟器”并在 iPhone 上查看我的应用程序的日志文件时,我只看到崩溃日志(我和其他人的应用程序的崩溃日志)。有没有办法只查看我的常规日志消息? NSLog 输出显示在控制台中,没问题。谢谢....

【问题讨论】:

NSLog 将写入控制台,如果它可以找到一个(在调试模式下)在发布模式下它找不到控制台,所以它不会,如果你的意图是为了调试目的而写一些日志你不能通过简单的NSLog 实现这一点,您可以使用第三方服务。如果您正在跟踪某些东西,您可以使用 Newrelic、firebase 和许多其他可用工具,如果您想编写自定义文本以便分析崩溃,您可以尝试使用 fabric,不确定您在此处解决的问题的复杂性 当应用程序不是由 Xcode 启动时发生了崩溃,但是当在 Xcode 中启动时,一切都很好(我能够在 Xcode 的控制台中看到 NSLog 输出)。所以,我认为在设备日志中查看 NSLog 会很有用... 【参考方案1】:

(Swift 5.3、Xcode 12、ios 14 - 无需第三方服务或库

简而言之:您可以将NSLog 调用替换为对Logger 的调用。


您需要创建一个Logger 对象(在某个地方,您的偏好)。如果你愿意,你可以让你的日志更容易过滤,例如在控制台应用程序中,通过为应用程序中的不同部分/功能制作各种记录器。

import os.log

let downloadLogger = Logger(subsystem: "My app", category: "Downloading")
let somethingLogger = Logger(subsystem: "My app", category: "Lorem ipsum")

然后你像这样调用你的记录器:

// Some error occurs, so we log it:
downloadLogger.error("Error downloading feed contents: \(error, privacy: .public)")

// Some less important log:
somethingLogger.info("Secret has been stored: \(mySecret, privacy: .private(mask: .hash))")

注意我们的秘密通过申请.private(mask: .hash)保密。

要查看和过滤您的日志,请在 Devices 屏幕上的 View Device Logs 下方找到 Open Console。 p>

正如文章来源所说:

“如果您想从设备收集日志,即使您的应用不是 不再运行,您可以在 Mac 上使用 log 命令 collect 选项 … 然后可以在控制台应用程序中打开您获得的 logarchive 文件并像实时日志一样进行过滤。”

sudo log collect --device --start "2020-06-25 16:10:00" --output myapp.logarchive


(学分:source)

【讨论】:

以上是关于设备控制台中仅显示崩溃日志的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在设备上崩溃,但 XCode 没有注册崩溃

iOS应用崩溃日志分析

如何获取在 chromecast 设备上崩溃的 Receiver 应用程序的崩溃日志?

通过 iTunes Connect 向 Apple 提交崩溃日志

应用程序崩溃后未填充 xCode 设备日志

在 iOS 8 设备上查找崩溃日志