iOS - SwiftyBeaver 日志框架源码分析

SwiftyBeaver

SwiftyBeaver 可以为 Xcode 控制台提供强大的日志记录功能,包括颜色(Xcode 9 以后都没有颜色输出了,但表情可以。), 可自定义格式等等。

一、功能介绍

  1. 登录 Xcode控制台 或者 登录到文件
  2. 添加 自定义日志目标 处理程序以登录 Loggly,Redis 等。
  3. 将带有端到端 AES256 加密的日志发送到 SwiftyBeaver Mac App
  4. 彩色输出 到日志文件等
  5. 使用 自己的串行后台队列/线程 以获得出色的性能
  6. 低于设定的最小值的日志级别不会执行,以获得更好的发布性能
  7. “Needle in the Haystack”模式提高了工作效率,节省了大量时间
  8. 配置简单方便
  9. 使用多个日志记录目标和设置,即使是相同类型
  10. 已经有很好的默认值
  11. 完全可定制的 日志格式
  12. 强大的过滤器
  13. 使用 log.debug(“foo”) 语法
  14. 开始使用2行代码
  15. 通过Carthage,CocoaPods,Swift Package Manager进行简单安装或下载
  16. 非常详细的日志记录(可选):
    • 时间(精确到微秒)
    • 水平(颜色输出)
    • 线程名称 (如果不是主线程)
    • 文件名,功能和行
    • 消息(可以是字符串或任何类型的变量)
  17. 对领先的 Xcode 开发插件的原生支持

## 二、安装

对于 Swift 3, 请安装最新的SwiftyBeaver版本

对于 Swift 2, 安装SwiftyBeaver 0.7.0

支持的平台和安装工具

OSX 10.9+ watchOS 2+ tvOS9+
Swift Package Manager
Carthage
CocoaPods
Download

通过 Swift Package Manager 安装

对于 Swift Package Manager 和 Swift 3,将以下包添加到 Package.swift 文件中:

1
.Package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git")

通过 Carthage 安装

您可以使用 Carthage 在 Swift 3 下安装 SwiftyBeaver,方法是将其添加到您的Cartfile中:

1
github "SwiftyBeaver/SwiftyBeaver"

对于Swift 2:

1
github “SwiftyBeaver / SwiftyBeaver” 〜> 0.7

通过 CocoaPods 安装

要将 CocoaPods 与 Swift 3 一起使用,请将其添加到您的 Podfile 中:

1
pod 'SwiftyBeaver'

对于Swift 2:

1
2
3
4
5
6
7
8
9
10
11
12
13
target 'MyProject' do
use_frameworks!

# Pods for MyProject
pod 'SwiftyBeaver', '~> 0.7'
end

post_install do |installer|
installer.pods_project.build_configurations.each do |config|
# Configure Pod targets for Xcode 8 with Swift 2.3
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end

通过下载安装

您可以使用以下3个简单步骤在项目中下载和嵌入SwiftyBeaver Framework:

这里下载最新的发布 zip
/sources文件夹拖放 到项目中(确保选中“如果需要,复制项目”)
如果您愿意,可以将“sources”组重命名为“SwiftyBeaver”
注意:如果以 import SwiftyBeaver 这种方式安装,则不必 。

三、使用

3.1 项目中使用 SwiftyBeaver,在AppDelegate.swift 文件中,添加如下代码。

1
2
import SwiftyBeaver
let log = SwiftyBeaver.self

3.2 在AppDelegate:didFinishLaunchingWithOptions()方法中添加SwiftyBeaver 日志目的(控制台、文件、等等),可以选择调整日志格式,完成后可以全局调用以下log级别输出日志。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//添加log目的,最少一项

// Xcode控制台日志
let console = ConsoleDestination()
// 默认swiftybeaver.log文件日志
let file = FileDestination()
// cloud平台配置
let cloud = SBPlatformDestination(appID: "foo", appSecret: "bar", encryptionKey: "123")


// 使用自定义格式输出短时间、日志级别、信息
// console.format = "$DHH:mm:ss$d $L $M"
// 或者使用 console.format = "$J" 输出JSON格式

//添加配置到SwiftyBeaver
log.addDestination(console)
log.addDestination(file)
log.addDestination(cloud)

//日志具有不同重要性
log.verbose("not so important") // 优先级 1, VERBOSE 紫色
log.debug("something to debug") // 优先级 2, DEBUG 绿色
log.info("a nice information") // 优先级 3, INFO 蓝色
log.warning("oh no, that won’t be good") // 优先级 4, WARNING 黄色
log.error("ouch, an error did occur!") // 优先级 5, ERROR 红色

//支持类型: 字符串,数字,日期,等等
log.verbose(123)
log.info(-123.45678)
log.warning(Date())
log.error(["I", "like", "logs!"])
log.error(["name": "Mr Beaver", "address": "7 Beaver Lodge"])

3.3 效果

四、输出到不同的打印窗口

4.1 输出到文件

输出到文件非常适合开发。您可以在 Terminal.app 的帮助下跟踪您的日志文件,在发布时您可以将日志文件附加到电子邮件或发送到您的服务器。文件位置是可调整的,默认情况下,文件存储在应用程序的 Document 目录中。

SwiftyBeaver Framework 自动为每条日志消息添加颜色,而无需第三方插件。


初始化

要输出到文件,您只需要实例化 FileDestination(),可选择调整属性,然后将实例添加到 SwiftyBeaver 本身。如果创建并添加了多个文件目标实例,则可以以不同的格式登录到多个文件(示例请参见下面的内容)。将自动创建一个不存在的文件。

1
2
let file = FileDestination()
log.addDestination(file)

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
let file = FileDestination() // get new file destination instance
// uses standard logging to swiftybeaver.log in the application cache directory
console.format = "$DHH:mm:ss$d $C$L$c: $M" // hour, minute, second, colored log level and message
file.minLevel = Level.verbose
log.addDestination(file) // add to SwiftyBeaver to use destination

// the second file with different properties and custom filename
let file2 = FileDestination()
file2.format = "$Dyyyy-MM-dd HH:mm:ss.SSS$d $C$L$c: $M" // full datetime, colored log level and message
file2.minLevel = Level.info
file2.levelString.error = "Beaver Love!"
file2.logFileURL = URL(fileURLWithPath: "/tmp/app_info.log") // tmp is just possible for a macOS app
log.addDestination(file2)

4.2 输出到 Xcode 控制到

来自Apple的Xcode是我们用来为Apple平台构建应用程序的唯一开发工具。不幸的是,Xcode除了NSLog()之外没有内置的日志记录,甚至需要一个繁琐的DIY解决方案。

使用SwiftyBeaver Framework, Xcode最终可以为其控制台提供强大的日志记录功能,包括颜色, 可自定义格式等等。


带有彩色电平指示器的Xcode控制台的屏幕截图(Xcode 8)

初始化

要输出到 Xcode Console,您只需要实例化 ConsoleDestination(),可选择调整属性,然后将实例添加到 SwiftyBeaver 本身:

1
2
let console = ConsoleDestination()
log.addDestination(console)

示例

1
2
3
4
let console = ConsoleDestination()
console.format = "$DHH:mm:ss$d $L: $M" // hour, minute, second, loglevel and message
console.minLevel = .info // just log .info, .warning & .error
log.addDestination(console) // add to SwiftyBeaver

4.3 输出到 SwiftyBeaver 平台

SwiftyBeaver平台是世界上第一个Swift的日志记录平台。它可以非常方便地自动,高度安全地接收和分析应用程序在发布时创建的日志,分析用户和设备数据 。

该平台包含以下组件:

SwiftyBeaver Framework 在开发和发布期间在您的应用程序中创建日志

SwiftyBeaver Crypto Cloud 用于存储和同步加密日志

SwiftyBeaver Mac App 下载,搜索和分析从您的app发送的日志

初始化

要输出到平台,您只需要 SBPlatformDestination() 使用凭据进行实例化,可以选择调整属性,然后将实例添加到 SwiftyBeaver 本身。

1
2
let platform = SBPlatformDestination(appID: "YourAppID", appSecret: "YourAppSecret", encryptionKey: "Your32CharKey")
log.addDestination(platform)
------本文结束 感谢阅读------

本文地址:http://kaaaaai.cn/articles/045.html
本文基于 知识共享署名-相同方式共享 4.0 国际许可协议发布
转载请注明出处,谢谢!

众筹项目:拯救世界!
0%