撰写者:Jake Prickett🖋
项目概述
自从Swift日志框架Swift Logging Framework 发布以来,我发现缺少了一个对我来说至关重要的功能:能够从应用的内部查看日志,无需手动连接设备到电脑或将设备带入。这个仓库包含两个框架:一个纯Swift日志库,以及一个用于查看存储和生成日志的配套用户界面库。
这个库受到了Apple的Swift日志框架的启发。
LogIt
LogIt 是一个 lightweight(轻量级)的日志库,用于iOS & macOS应用,用Swift编写,可以高效地将日志写入和存储在设备上。通过这种方式,它提供了一种从您的代码中访问这些日志的方法,而无需将设备连接到电脑。
LogItUI
LogItUI,是LogIt的配套库,是一个用于支持显示使用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
框架(除非用户想要使用,否则不需要同时使用) - 为 PR 添加 CI 运行
- 添加 SwiftPM & CocoaPod 支持
- 单元测试覆盖率
- 文档(徽章、完成描述、功能、基本用法、依赖支持)
- 代码文档
- 设置所需的最小日志级别
- 在 VC 中的行上设置备用背景颜色
- 引入线程安全的读取/写入
- 将日志记录到可配置大小的缓冲区中,当达到限制时写入。 (与每次记录日志相比,这可能很昂贵)
- 添加在记录日志时可以传递的元数据
- 在选择日志时,查看特定日志的详细信息
- 日志搜索功能
- 高级用法:不够 View Controller 么?向用户提供原始日志文件以及如何使用的说明。
如果您发现问题或功能请求,请随时通过相应的模板打开一个问题。喜欢自己修复并想参与进来吗?请这么做!