DataLog
一个支持 Datadog 的现代、轻量级 Swift 5.0 日志框架。
安装
CocoaPods
在您的项目中使用 Datalog 的最佳方式是使用 Cocoapods。为此,只需在您的项目 Podfile 中添加 pod 'Datalog'
,然后运行 pod install
。
手动
尽管不推荐这么做,但您可以将源文件从项目中复制到自己的项目中。所有事情应该像通过 CocoaPods 安装一样正常工作。我不建议使用这种方法安装,因为任何新修复的 bug 或改进都需要您手动添加到您的项目中。这不是乐趣。
用法
DatalogConfiguration
为了初始化一个 DatalogClient
,你首先必须创建一个 DatalogConfiguration
实例。此类配置包含与 DatalogClient
交互的具体项目细节,它反过来配置如何将日志发送到 Datadog 的服务器。
DatalogConfiguration
的初始化可能会失败,它会在两种特定条件下 抛出异常
- 你尝试设置的
apiKey
属性是一个空字符串 - 指定的
maximumBatchCount
大于当前允许的最大值。
这两种情况都可能导致 DatalogConfiguration.Error.apiKeyEmpty
或 DatalogConfiguration.Error.batchCountNotSupported
错误。
鉴于此初始化器会 抛出异常
,你可能需要使用 do-try-catch
来包装它,或者明确表示你打算用类似 let configuration = try! DatalogConfiguration(...)
的方式来实例化对象。
初始化器需要六个(6)个属性,但只有第一个属性,即 apiKey
是必须的。所有其他属性都具有默认值,除非你想覆盖这些默认值,否则不需要包含它们。
属性列表按照顺序如下
apiKey
: 必须 Datadog 应用程序的 API 密钥hostLocation
: 客户端是否连接到 EU 主机或 US 主机。默认:.us
maximumBatchCount
: 在持久化到 Datadog 之前事件批处理的最大数量。默认:50
。minimumLogLevel
: 将日志持久化到 Datadog 的最低日志级别阈值。默认:.info
networkProtocol
: 请求所使用的网络协议。默认:.https
sourceName
: 源应用程序名称,例如:YourCoolApp。默认:nil
示例
let config = try! DatalogConfiguration("my-api-key")
let config = try! DatalogConfiguration("my-api-key", maximumBatchCount: 25)
let config = try! DatalogConfiguration("my-api-key", maximumBatchCount: 25, sourceName: "My Cool App")
DatalogClient
DatalogClient
需要三个(3)个属性,只有一个(1)个属性是必需的。
属性列表按照顺序如下
configuration
: 必需 用于 Datadog 环境的DatalogConfiguration
fileManager
: 一个FileManger
实例,它允许你将失败的日志存储在设备上以供将来检索。默认:.default
urlSession
: 一个URLSession
实例。如果您希望使用 Datalog 客户端传递预配置的URLSession
,这非常有用。默认:.init(configuration: .default)
。
此外,客户端只有两个公共方法:log
和 flush
。
日志
《log》方法用于向Datadog当前批次中添加要记录的DatalogMessage
类型。此方法将自动验证当前批次是否达到了配置的最大值,如果达到了,则将触发提交到Datadog。
方法签名
public func log(_ message: DatalogMessage, forceUpdate: Bool = false)
签名的第一个属性是DatalogMessage
类型,它是要发送的日志数据的表示。第二个属性是forceUpdate
,如果设置为true
,则将message
添加到现有批次,并提交该批次到Datadog。
flush
flush
方法用于手动触发当前批次消息的提交。无论当前批次的项数如何,批次都将提交到Datadog并清除。这对于在应用进入后台时刷新当前批次以在应用终止前发送日志等很有用。
方法签名
public func flush()
离线支持
日志很重要,由于网络问题而丢失这些数据可不是什么乐趣。这就是为什么Datalog支持离线记录。
在批次无法发送到Datadog的情况下,该批次将保存在磁盘上,并在下一次创建DatalogClient
时重试。