撰写者: Jake Prickett🖋
电梯简报
自从引入了Swift 日志框架以来,对于日常 iOS 工程师来说,似乎缺少了一个至关重要的方面:能够在应用程序《之内》查看日志的能力。无需手动连接设备到计算机或将设备带入。此仓库包含两个框架:一个纯 Swift 日志库,以及用于查看存储和生成日志的配套用户界面库。
这个库受到了苹果 Swift 日志框架的启发。
LogIt
LogIt 是一个专为 iOS & macOS 应用程序编写的轻量级 Swift 日志库,它有效地将日志写入并存储在设备上。通过这样做,它可以在不需要将设备连接到计算机的情况下,从代码中访问这些日志。
LogItUI
LogItUI,是 LogIt 的配套库,是一个支持显示在 iOS 应用程序中记录的日志的库。 (注意:macOS UI 支持是功能路线图的一部分) 这还满足不了您的需求?LogIt 同时还提供了构建围绕日志的自定义 UI 的能力,以适应更多定制用例。
基本用法
LogIt
配置
使用LogIt的第一步是正确配置您的记录器。此值告诉库将日志文件存储在哪里,这是必填步骤。
注意:此操作通常在您的
AppDelegate
或SceneDelegate
中完成。
// Custom specified identifier
LogIt.configure(with: .custom('custom.log.identifier'))
// Pulls the bundleId if available
LogIt.configure(with: .bundleId)
// Default value: "LogIt.log"
LogIt.configure(with: .default)
如果您需要,可以使用LogIt.logFileURL
访问此文件路径。
为了正确记录,必须使用以下方法明确启用此框架:
// Enables logging
LogIt.enableLogging()
// Disables logging
LogIt.disableLogging()
日志级别
以下日志级别受支持
日志级别 | 值 |
---|---|
错误 | .error |
警告 | .warning |
信息性 | .info |
如果您只想记录高于一定级别的消息
// Will only display logs that are more severe or equal to `.warning`
// (All `.warning` logs and `.error` logs currently.)
LogIt.setLogLevel(.warning)
这可能在某些情况下很有用,例如在App Store发布时,可能不希望有详细的记录。
记录
现在到有趣的记录部分。每个日志级别都有一个相关联的方法。此方法接收一个字符串。
LogIt.info("Informational Log!")
LogIt.warning("Warning Log!")
LogIt.error("Error Log!")
是的,就这么简单!
检索日志
可以通过调用 LogIt.getLogs()
方法来检索日志。如果在获取过程中发生错误,该方法将抛出一个描述性错误,可以进行处理。
如果数据已损坏或文件不再存储在磁盘上,此方法还将清空日志文件。
清空日志
可以通过调用 LogIt.clearLogs()
方法来清空日志。 如果在清空过程中发生错误,该方法将抛出一个描述性错误。
LogItUI
LogItUI 的主要组件是 LogItViewController
。它负责检索、显示和过滤日志。
查看演示
@objc
private func viewLogs() {
let vc = LogItViewController()
navigationController?.present(vc, animated: true, completion: nil)
}
安装
请参考以下说明进行安装 LogIt 和 LogItUI。
要求
- iOS 12.0+
- macOS 10.12+
- Swift 5.0+
CocoaPods
要安装它,只需将以下行添加到您的 Podfile
文件中
# To consume LogIt
pod 'LogIt'
# To consume LogItUI
pod 'LogItUI'
Carthage
要安装它,只需将以下行添加到您的 Cartfile 文件中
github "Jake-Prickett/LogIt"
Swift Package Manager
要安装它,只需将软件包作为依赖项添加到
Package.swift
:
dependencies: [
.package(url: "https://github.com/Jake-Prickett/LogIt.git", from: "X.Y.Z"),
]
特性路线图
- 确定接口/配置步骤
- 随附可定制的 LogItViewController
- 增加配置指定标识符以便于日志文件(在单个设备上处理多个记录器)的能力
- 可以通过 LogItViewController 导出日志(初始为通过电子邮件)
- 支持 LogItViewController 的暗黑模式
- 将
LogIt
和LogItUI
模块进行分离(不需要用户同时使用除非他们需要) - 为拉取请求添加 CI 运行
- 添加 SwiftPM 和 CocoaPod 支持
- 单元测试覆盖率
- 文档(徽章、描述、功能、基本用法、依赖项支持)
- 代码文档
- 设置所需的最小日志级别
- 在 VC 中行的背景颜色替代选项
- 引入线程安全的读写
- 将日志记录到可以配置大小的缓冲区中,当达到限制时写入。(与每次写入日志相比,成本较高)
- 添加可以随着日志一起传递的元数据
- 在选择特定日志时,查看该日志的更多详细信息
- 日志的搜索功能
- 高级用法:控制器外不够?为用户提供原始日志文件和使用说明。
如果您发现问题或有功能请求,请随时通过相应的模板打开问题。想自己修复并想要参与?请这么做!