SimpleLogger
是一款强大且灵活的日志框架,专为跨多个平台的 Swift 应用程序而设计,包括 iOS、macOS、tvOS 和 watchOS。它为轻松精确地管理、过滤和导出日志提供了广泛的功能。
使用 Swift Package Manager 将 SimpleLogger
添加到您的 Swift 项目中。
dependencies: [
.package(url: "https://github.com/markbattistella/SimpleLogger", from: "1.0.0")
]
或者,您可以使用 Xcode 添加 SimpleLogger
,方法是导航到 File > Add Packages
并输入软件包仓库 URL。
SimpleLogger
的简单之处在于它有一个便捷的初始化器,它使用应用程序的内部 BundleIdentifier 作为子系统,并拥有 89 个预定义的常用类别。
使用 SimpleLogger
进行通用日志记录非常简单,只需
// Create a logger instance with a specific category
let logger = Logger(category: .ui)
// Log an informational message
logger.info("User tapped the start button")
SimpleLogger
包含预定义的类别,以帮助更有效地组织和过滤日志。以下是可用类别的表格
日志类别 | 描述 |
---|---|
routing |
用于路由相关日志的日志类别。 |
navigation |
用于导航相关日志的日志类别。 |
stateManagement |
用于状态管理相关日志的日志类别。 |
dependencyInjection |
用于依赖注入相关日志的日志类别。 |
observers |
用于观察者相关日志的日志类别。 |
publishers |
用于发布者相关日志的日志类别。 |
subscribers |
用于订阅者相关日志的日志类别。 |
events |
用于事件相关日志的日志类别。 |
signals |
用于信号相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
analytics |
用于分析相关日志的日志类别。 |
configuration |
用于配置相关日志的日志类别。 |
errorHandling |
用于错误处理相关日志的日志类别。 |
logging |
用于日志记录相关日志的日志类别。 |
configurationManagement |
用于配置管理相关日志的日志类别。 |
imageProcessing |
用于图像处理相关日志的日志类别。 |
videoProcessing |
用于视频处理相关日志的日志类别。 |
audioProcessing |
用于音频处理相关日志的日志类别。 |
sensors |
用于传感器相关日志的日志类别。 |
camera |
用于相机相关日志的日志类别。 |
location |
用于位置相关日志的日志类别。 |
maps |
用于地图相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
network |
用于网络相关日志的日志类别。 |
api |
用于 API 相关日志的日志类别。 |
upload |
用于上传相关日志的日志类别。 |
download |
用于下载相关日志的日志类别。 |
sync |
用于同步相关日志的日志类别。 |
connectivity |
用于连接相关日志的日志类别。 |
reachability |
用于可达性相关日志的日志类别。 |
streaming |
用于流媒体相关日志的日志类别。 |
bluetooth |
用于蓝牙相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
performance |
用于性能相关日志的日志类别。 |
memoryManagement |
用于内存管理相关日志的日志类别。 |
concurrency |
用于并发相关日志的日志类别。 |
threading |
用于线程相关日志的日志类别。 |
debugging |
用于调试相关日志的日志类别。 |
monitoring |
用于监控相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
coreData |
用于 Core Data 相关日志的日志类别。 |
swiftData |
用于 Swift Data 相关日志的日志类别。 |
database |
用于数据库相关日志的日志类别。 |
caching |
用于缓存相关日志的日志类别。 |
persistence |
用于持久化相关日志的日志类别。 |
serialization |
用于序列化相关日志的日志类别。 |
deserialization |
用于反序列化相关日志的日志类别。 |
parsing |
用于解析相关日志的日志类别。 |
keychain |
用于 Keychain 相关日志的日志类别。 |
userDefaults |
用于 UserDefaults 相关日志的日志类别。 |
backup |
用于备份相关日志的日志类别。 |
restore |
用于恢复相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
security |
用于安全相关日志的日志类别。 |
encryption |
用于加密相关日志的日志类别。 |
decryption |
用于解密相关日志的日志类别。 |
permissions |
用于权限相关日志的日志类别。 |
authentication |
用于身份验证相关日志的日志类别。 |
authorization |
用于授权相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
lifecycle |
用于生命周期相关日志的日志类别。 |
initialization |
用于初始化相关日志的日志类别。 |
deinitialization |
用于反初始化相关日志的日志类别。 |
fileSystem |
用于文件系统相关日志的日志类别。 |
backgroundTasks |
用于后台任务相关日志的日志类别。 |
scheduling |
用于调度相关日志的日志类别。 |
notifications |
用于通知相关日志的日志类别。 |
timers |
用于定时器相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
testing |
用于测试相关日志的日志类别。 |
unitTesting |
用于单元测试相关日志的日志类别。 |
integrationTesting |
用于集成测试相关日志的日志类别。 |
uiTesting |
用于 UI 测试相关日志的日志类别。 |
mocking |
用于模拟相关日志的日志类别。 |
stubbing |
用于桩代码相关日志的日志类别。 |
validation |
用于验证相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
ui |
用于 UI 相关日志的日志类别。 |
gestures |
用于手势相关日志的日志类别。 |
animations |
用于动画相关日志的日志类别。 |
transitions |
用于过渡效果相关日志的日志类别。 |
accessibility |
用于辅助功能相关日志的日志类别。 |
localization |
用于本地化相关日志的日志类别。 |
internationalization |
用于国际化相关日志的日志类别。 |
theming |
用于主题相关日志的日志类别。 |
styling |
用于样式相关日志的日志类别。 |
layout |
用于布局相关日志的日志类别。 |
rendering |
用于渲染相关日志的日志类别。 |
日志类别 | 描述 |
---|---|
utils |
用于实用工具相关日志的日志类别。 |
extensions |
用于扩展相关日志的日志类别。 |
helpers |
用于助手相关日志的日志类别。 |
factories |
用于工厂相关日志的日志类别。 |
builders |
用于构建器相关日志的日志类别。 |
commands |
用于命令相关日志的日志类别。 |
handlers |
用于处理程序相关日志的日志类别。 |
middlewares |
用于中间件相关日志的日志类别。 |
interceptors |
用于拦截器相关日志的日志类别。 |
LoggerCategory
结构体允许用户通过简单地扩展该结构体并定义一个新类别来创建自己的类型安全的类别。
如果存在重复的类别(新的类别与预定义的类别匹配,或重复的自定义类别),软件包将记录警告以通知您。
extension LoggerCategory {
static let myCustomCategory = LoggerCategory("MyCustomCategory")
}
// Using the custom category
let logger = Logger(category: .myCustomCategory)
要在您的 SwiftUI 应用程序中初始化 LoggerManager
,请创建它的一个实例,并指定其参数以根据您的需求定制日志记录行为
import SwiftUI
import SimpleLogger
@main
struct MyApp: App {
@StateObject private var loggerManager = LoggerManager(
excludeSystemLogs: true,
filterType: .all,
logLevels: [.info, .error]
)
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(loggerManager)
}
}
}
属性/参数 | 描述 | 默认值 | 用例 |
---|---|---|---|
excludeSystemLogs |
从获取结果中排除系统日志的标志。 | true |
通过仅关注特定于应用程序的日志来减少噪音。 |
filterType |
定义应用于日志条目的过滤类型。 | .specificDate |
帮助按特定时间范围或日期、范围、小时或预设过滤器等条件缩小日志范围。 |
specificDate |
当 filterType 为 .specificDate 时,要过滤日志的特定日期。 |
Date() (当前日期) |
用于查看特定日期的日志,对于调查特定日期很有用。 |
dateRangeStart |
当 filterType 为 .dateRange 时,用于过滤日志的开始日期。 |
Date() (当前日期) |
设置日期范围的开始时间,用于在特定时间段内过滤日志。 |
dateRangeFinish |
当 filterType 为 .dateRange 时,用于过滤日志的结束日期。 |
Date() (当前日期) |
定义日期范围的结束时间,对于过滤两个日期之间的日志很有用。 |
hourRangeStart |
当 filterType 为 .hourRange 时,用于过滤日志的开始时间。 |
Date().addingTimeInterval(-3600) |
专注于从特定小时开始的日志条目,对于特定时间的调查很有用。 |
hourRangeFinish |
当 filterType 为 .hourRange 时,用于过滤日志的结束时间。 |
Date() (当前时间) |
指定在特定小时范围内过滤日志的结束时间。 |
selectedPreset |
当 filterType 为 .preset 时,用于过滤日志的预设选项。 |
.minutesFive |
应用预定义的时间范围过滤器,方便快速和常见的日志过滤场景。 |
exportState |
表示日志导出过程的初始状态。 | .ready |
管理和跟踪日志导出状态,对于反映导出状态的 UI 元素很有用。 |
logLevels |
一组日志级别,用于根据严重程度过滤日志条目。 | [] (空集) |
按严重程度(例如,错误、警告)过滤日志,专注于 .info 或 .error 等特定级别。 |
categoryFilters |
一组用于过滤日志的类别。 | [] (空集) |
仅包含来自指定类别(例如,“UI”、“Network”)的日志,从而优化日志输出以进行分析。 |
LoggerManager
支持各种过滤选项
以不同的格式导出日志
为 CSV 导出定义自定义分隔符以确保数据完整性
let customCSV = loggerManager.exportLogs(as: .csv(.semicolon))
欢迎贡献!请 Fork 仓库并提交 Pull Request 以进行任何功能、修复或改进。
SimpleLogger
在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。