Birch
Swift iOS / macOS / tvOS 的简单、轻量级远程日志。
在Birch注册您的免费账户。
Birch 允许您将日志输出到各种通道,无论它们是否具有本地实现。除此之外,Birch 还提供了在生产的任何应用程序上远程调整日志配置的能力。
Birch 可以输出到:
- New Relic
- Datadog
- Logtail
- Loggly
- Elasticsearch
- Papertrail
- Logz
- CloudWatch
- S3
- Wasabi
- Google Cloud Logging
- 自定义Webhook
安装
使用CocoaPods
pod 'Birch'
pod 'BirchLumberjack' # optional. only used if you use CocoaLumberjack
pod 'BirchXCGLogger' # optional. only used if you use XCGLogger
使用Carthage
github "gruffins/birch-swift"
使用Swift包管理器
.package(url: "https://github.com/gruffins/birch-swift.git", majorVersion: 1)
设置
在您的应用程序委托类中初始化日志记录器。
import Birch
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
#if DEBUG
Birch.level = .trace // This overrides the server configuration during local development. The default is null.
Birch.synchronous = true // This makes the logger log synchronously. The default is false.
#else
Birch.console = false // Disable console logging in production.
#endif
Birch.debug = true // This line should be removed after you've successfully integrated.
Birch.initialize("YOUR_API_KEY", publicKey: "YOUR_PUBLIC_ENCRYPTION_KEY")
return true
}
}
日志记录
像使用任何日志记录器一样使用日志记录器。
Birch.t("trace message") // simplest
Birch.t { "trace message" } // most performant especially if it's expensive to build the log message.
Birch.d("debug message")
Birch.d { "debug message" }
Birch.i("info message")
Birch.i { "info message" }
Birch.w("warn message")
Birch.w { "warn message" }
Birch.e("error message")
Birch.e { "error message" }
基于块的日志记录具有更高的性能,因为块只有在当前日志级别包括日志级别时才会被执行。请参见以下示例
Birch.d {
return "hello" + someExpensiveFunction()
}
如果当前日志级别是 INFO
,则不构造日志。
配置
设备级别的配置留给了服务器,因此您可以远程控制它。在客户端还有一些可以控制的事情。
控制台
在本地开发期间,在控制台中查看日志是有用的。这些控制台日志在生产中是没有用的,因为您无法远程读取它们。默认值是 true
。
Birch.console = true
远程
在本地开发期间,您很可能不需要远程日志记录。您可以选择将其关闭以最小化对Birch的使用。默认值是 true
。
Birch.remote = false
级别
在本地开发期间,您可能想要快速覆盖服务器配置。默认值是 null
,允许服务器设置远程级别。设置值将始终覆盖服务器并阻止您远程调整级别。
Birch.level = .trace
同步
在本地开发期间,您可能希望日志在与调试器一起逐步时立即打印出来。为此,您需要使用同步日志记录。默认值是 false
。同步日志记录较慢,因为它必须在线内执行日志记录。
Birch.synchronous = true
调试
在集成库时,您可能好奇看到日志记录器是如何工作的。
Birch.debug = true
加密
我们强烈建议使用加密来加密您的日志,以在设备休息状态下进行加密。如果您省略了公共加密密钥,则Birch将使用纯文本在设备上保存日志。
无效的公钥将引发异常。
有关更多信息,请参阅我们的加密文档。
标识
您应该设置一个标识符,以便您可以在仪表板上识别源。如果您不设置一个,您只能通过Birch.uuid
分配的uuid来找到设备。
您还可以在源上设置自定义属性,这些属性将传播到所有输出渠道。
func onLogin(user: User) {
Birch.identifier = user.id
Birch.customProperties = ["country": user.country]
}
退出
为了遵守不同的法规,如GDPR或CCPA,您可能需要允许用户退出日志收集。
Birch.optOut = true
日志清理
Birch 默认带有邮箱和密码清理器,以确保敏感数据不会记录。在日志级别替换邮箱和密码为 [FILTERED]
,这样数据永远不会到达Birch服务器。
如果您想配置额外的清理器,请实现 Scrubber
协议,并使用所有希望使用的清理器初始化日志记录器。
import Birch
class YourScrubber: Scrubber {
init() {}
public func scrub(input: String) -> String {
return input.replacingOccurrences(
of: "YOUR_REGEX",
with: "[FILTERED]",
options: [.regularExpression, .caseInsensitive]
)
}
}
let options = Options()
options.scrubbers = [PasswordScrubber(), EmailScrubber(), YourScrubber()]
Birch.initialize("API_KEY", publicKey: "YOUR_PUBLIC_ENCRYPTION_KEY", options: options)
CocoaLumberjack
如果您希望从 CocoaLumberjack 发送日志到 Birih,可以使用提供的包装器。
有关更多详细信息,请参阅Birch-Lumberjack。
import BirchLumberjack
DDLog.add(DDBirchLogger())
XCGLogger
如果您希望从 XCGLogger 发送日志到 Birih,可以使用提供的包装器。
有关更多详细信息,请参阅Birch-XCGLogger。
import BirchXCGLogger
let logger = XCGLogger(identifier: "your_identifier", includeDefaultDestinations: false)
logger.add(destination: BirchXCGLogger())