轻量级且功能丰富的 SwiftUI 调试工具,能够查看视图状态控制台输出

氢报告器标志

乳齿象:@TaylorLineman

氢气报告器

一个快速轻量级的 SwiftUI 控制台和视图状态报告器,可用于查看活动日志和系统统计信息。对于在旅途中调试或当您的应用程序需要长时间调试而无法连接到计算机时非常有用!

特征

  • 在没有计算机的情况下在应用程序执行期间查看和调试 SwiftUI 视图状态
  • 使用简单扩展调试自定义类型
  • 查看当前设备统计信息,例如 RAM 和 CPU 使用率
  • 将自定义调试视图添加到报告器视图
  • 仅在调试会话期间处于活动状态,因此无需担心删除用于生产!
  • 在发送到控制台时查看自定义日志
  • 在应用中查看控制台输出,无需连接的调试器。

导出日志

导出日志的示例!

Hydrogen Reporter logs for 2023-04-23T15:22:07.650-04:00
--- ✨ Total Logs: 23 ---
--- 🛑 Total Fatal Error Logs: 0 ---
--- 🥲 Total Error Logs: 2 ---
--- ⚠️ Total Warn Logs: 2 ---
--- 🤖 Total Info Logs: 10 ---
--- ✅ Total Success Logs: 5 ---
--- ⚙️ Total Working Logs: 6 ---
--- 🔵 Total Debug Logs: 0 ---
--- Fatal % 0 - Error % 0 - Warn % 0 - Info % 0 - Success % 0 - Working % 0 - Debug % 0 ---
=== START LOGS ===
⚙️ Establishing Stream - ~/StreamingManager.swift @ line 187, in function establishStream()
✅ Web Socket did connect - ~/StreamingManager.swift @ line 384, in function urlSession(_:webSocketTask:didOpenWithProtocol:)
🤖 Received Message - ~/StreamingManager.swift @ line 208, in function receive()
🤖 Received Message - ~/StreamingManager.swift @ line 208, in function receive()
🤖 Stream Cancelled - ~/StreamingManager.swift @ line 224, in function stopWatchingStream()
🤖 Web Socket did close - ~/StreamingManager.swift @ line 405, in function urlSession(_:webSocketTask:didCloseWith:reason:)
⚙️ Establishing Stream - ~/StreamingManager.swift @ line 187, in function establishStream()
✅ Web Socket did connect - ~/StreamingManager.swift @ line 384, in function urlSession(_:webSocketTask:didOpenWithProtocol:)
=== END LOGS ===

开始

Swift Package Manager

通过 Xcode 将以下 url 添加到您的 Swift Packages 中

https://github.com/ActuallyTaylor/HydrogenReporter

示例代码

初始化

要开始使用,请先导入视图修改器,然后将视图修改器添加到主视图中。这将启动报告器并将浮动菜单添加到您的应用程序。下一步是添加您的记录器配置,以便 Hydrogen 可以适应您的需求。这是通过调用 来完成的。HydrogenReporter.hydrogenReporter()Logger.shared.setLoggerConfig(config:)

import HydrogenReporter

struct SampleApp: App {

    init() {
        Logger.shared.setLoggerConfig(config: .init(applicationName: "Hydrogen Reporter", defaultLevel: .info, defaultComplexity: .simple, leadingEmoji: "⚫️"))
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
                .hydrogenReporter()
        }
    }
}

将 SwiftUI 视图添加到报告器

要将自定义视图添加到报告器菜单,您只需将修饰符添加到任何视图即可。这将向报告器注册它,并允许您查看其可调试的属性!.debuggable(self, id: "ID")

此示例将以下示例视图添加到具有主视图标记的报告器

struct SampleView: View {
    @State var string: String = "Hello World"

    var body: some View {
        NavigationView {
            VStack {
                TextField("Text", text: $string)
                    .textFieldStyle(.roundedBorder)

                Button("Log Error") {
                    LOG("You just broke everything", level: .error)
                }
                Button("Log Warning") {
                    LOG("You should not have done that", level: .warn)
                }
                Button("Log Info") {
                    LOG("Chilling", level: .info)
                }
                Button("Log Success") {
                    LOG("That worked!", level: .success)
                }
                Button("Log Working") {
                    LOG("Working on something...", level: .working)
                }
                Button("Log Debug") {
                    LOG("Print Debugging is where it is at", level: .debug)
                }
            }
        }
        .debuggable(self, id: "Main View")
    }
}

将自定义视图添加到报告器的菜单

如果您对要在报告器中显示的内容有自定义需求(自定义调试菜单),您可以通过使用修饰符注册它来添加它,从而轻松地让 Hydrogen 处理此视图!只需提供视图,然后提供 ID 即可标识视图。.customDebuggableView()

struct SampleView: View {
    @State var string: String = "Hello World"

    var body: some View {
        NavigationView {
            VStack {
                TextField("Text", text: $string)
                    .textFieldStyle(.roundedBorder)
        }
        .customDebuggableView(customView, id: "Custom View")
    }
    
    var customView: some View {
        VStack {
            Text("A Custom View!")
            Text("Some State \(string)")
        }
    }
}

记录

氢气记录器能够旋转应用程序的实际控制台输出,并将其显示在氢气报告器中。这允许您在发生时查看控制台输出,而无需切换打印语句。

如果您希望在氢报告器部分内看到输出,您可以使用 . 内部使用相同的函数,因此输出几乎相同。LoggerprintLOGLOGprint

我建议您将您的陈述移至陈述,因为它们允许您设置其意识级别并查看更全面的printLOG

使用记录器

要使用记录器,您可以调用该函数,例如:LOG

// Log a simple message
LOG("Completed Setup")

// Log an Error
LOG("Purchasing Error:", error, level: .error)

// Debug Information
LOG("Passed section 3", level: .debug)

记者截图

记录

记录器视图显示已使用 记录的所有日志。还会显示总计和百分比,以便您可以查看日志的总体统计信息。LOG

记录器的屏幕截图

视图检查器

视图检查器显示已检查视图的所有状态变量。它们与其值并排显示。

检查器的屏幕截图

统计视图

设备统计信息页面的屏幕截图,其中显示有关当前正在运行的设备的信息。此屏幕当前为 WIP。记录器的屏幕截图

Console

A screenshot of the console when activated from the reporter view. Console logs from both Swift and your app are shown here.

Screenshot of the Console

Contact

Any questions that you have can be directed towards the GitHub issues or my Mastodon account!

GitHub

点击跳转