Birch 1.9.1

Birch 1.9.1

Ryan Fung维护。



Birch 1.9.1

  • 作者:
  • Ryan Fung

Birch

Tests Carthage compatible CocoaPods compatible Swift Package Manager compatible codecov Platforms

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())