SimpleLogger

Swift Versions

Platforms

Licence

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 用于 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)

LoggerManager

要在您的 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 文件。