概述
在上篇 Swift 中更现代化的调试日志系统趣谈(一) 博文中,我们初步讨论了如何利用 Swift OSLog 框架中的 Logger 日志记录器替代“简陋”的 print 方法来记录我们的调试消息。
而接下来我们会再接再厉,继续调试日志系统的进一步介绍。
在本篇博文中,您将学到如下内容:
- 概述
- 4. 在 Xcode 外部访问日志
- 5. 原汤化原食:App 自身访问日志
- 6. 日志与隐私
- 总结
相信本篇博文中能为本系列文章画上一个圆满的句号,也会让小伙伴们未来的调试之路前程似锦、妙趣横生!
那还等什么呢?让我们来继续 Swift 现代化调试之旅吧!
Let‘s go!!!????
4. 在 Xcode 外部访问日志
我们有很多方法在不运行 Xcode 的情况下读取日志消息,其中一个最常用的就是使用控制台(Console)App。
通过在 Mac 上运行控制台应用,我们可以连接 iPhone 等移动设备查看实时的调试日志消息。这自然也包括我们自己开发 App 发出的消息:
如上图所示,控制台应用提供了海量过滤选项来确保我们仅专注自己感兴趣的 App。
在调试涉及后台启动和下载的代码时,Console 应用程序的日志记录是非常可贵的。因为我们将会关闭自己的 App,并强制其内存不足(同时分离 Detach 调试器),以便可以查看是否在正确时间使用预期值调用了所有的代理方法。
除此之外,能够将手机连接 Mac 同时打开控制台并浏览应用程序的日志也非常有用。在秃头码农邋遢的卧室里,这使得我们可以在其它设备上进行一些粗略的预调试,而不必劳神费时地从 Xcode 直接构建 App 并传送到这些设备上启动运行。
如上图所示:使用控制台应用我们还能快速的选择监控日志源头的不同设备,并且在内置的各种日志种类里分门别类的仔细探查所需的全部调试消息。
5. 原汤化原食:App 自身访问日志
如果大家希望能够接收来自用户的日志,以便让调试具有日志消息完全的访问权限,则可以在自己的 App 中实现日志查看器。
我们可以从 OSLog 的存储中检索日志记录,并使用 OSLogStore 类来获取日志消息。
例如,下面是一个简单的 SwiftUI 视图,它能够获取属于我们自己 App 创建日志子系统的所有消息:
import Foundation
import OSLog
import SwiftUI
struct LogsViewer: View {