适用于 Swift 3、Swift 4 和 Swift 5 的多彩、灵活、轻量级日志记录工具。
非常适合开发和发布使用,支持控制台、文件和云端目标,可用于服务器端 Swift。
开发期间:通过 OSLog API 或 Print 在 Xcode 控制台进行彩色日志记录
在 Xcode 15 中
// 使用 Apple 的高级 OSLog API:
let console = ConsoleDestination()
console.logPrintWay = .logger(subsystem: "Main", category: "UI")
// 或使用传统的 "print"(这是默认设置):
let console = ConsoleDestination()
console.logPrintWay = .print
在 Xcode 8 中
了解更多关于在 Xcode 8 控制台使用 Swift 3、4 和 5 进行彩色日志记录的信息。对于 Swift 2.3,请使用此 Gist。不再需要修改 Xcode 8即可获得彩色输出。你甚至可以自定义日志级别的文字(比如用 ATTENTION 代替 ERROR),调整显示的数据量,以及选择是否使用💜或将其替换为其他表情符号😉
开发期间:彩色日志记录到文件
了解更多关于记录日志到文件的信息,这对 Terminal.app 爱好者或需要将日志存储在磁盘上的用户来说非常有用。
Google Cloud 和更多功能
你可以完全自定义日志格式,将其转换为 JSON,或创建自己的日志目标。例如,我们的 Google Cloud Destination 只是另一种自定义的日志格式,它为在 Google Cloud Platform 上托管的服务器端 Swift 添加了强大的自动日志记录功能。
安装
- 对于 Swift 4 和 5,请安装最新版本的 SwiftyBeaver
- 对于 Swift 3,请安装 SwiftyBeaver 1.8.4
- 对于 Swift 2,请安装 SwiftyBeaver 0.7.0
Carthage
你可以使用 Carthage 安装 SwiftyBeaver,只需在 Cartfile 中添加:
Swift 4 和 5:
github "SwiftyBeaver/SwiftyBeaver"
Swift 3:
github "SwiftyBeaver/SwiftyBeaver" ~> 1.8.4
Swift 2:
github "SwiftyBeaver/SwiftyBeaver" ~> 0.7
Swift Package Manager
对于 Swift Package Manager,请在 Package.swift 文件中添加以下包。仅支持 Swift 4 和 5:
.package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", .upToNextMajor(from: "2.0.0")),
CocoaPods
要使用 CocoaPods,只需在 Podfile 中添加以下内容:
Swift 4 和 5:
pod 'SwiftyBeaver'
Swift 3:
target 'MyProject' do
use_frameworks!
# Pods for MyProject
pod 'SwiftyBeaver', '~> 1.8.4'
end
Swift 2:
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|
# 为 Xcode 8 和 Swift 2.3 配置 Pod 目标
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end
使用方法
在 AppDelegate.swift
的顶部附近添加以下代码,以便在整个项目中使用 SwiftyBeaver。
import SwiftyBeaver
let log = SwiftyBeaver.self
在 AppDelegate:didFinishLaunchingWithOptions()
的开头添加 SwiftyBeaver 日志目标(控制台、文件等),可选择调整日志格式,然后你就可以全局使用以下日志级别调用:
// 添加日志目标。至少需要一个!
let console = ConsoleDestination() // 记录到 Xcode 控制台
let file = FileDestination() // 记录到默认的 swiftybeaver.log 文件
// 使用自定义格式,并将控制台输出设置为简短的时间、日志级别和消息
console.format = "$DHH:mm:ss$d $L $M"
// 或者使用此格式输出 JSON:console.format = "$J"
// 在 Xcode 15 中,将日志记录方法指定为 .logger 以在控制台中显示颜色、子系统和类别信息。(依赖于 OSLog API)
console.logPrintWay = .logger(subsystem: "Main", category: "UI")
// 如果你不想使用 OSLog API,可以改用 print。
// console.logPrintWay = .print
// 将目标添加到 SwiftyBeaver
log.addDestination(console)
log.addDestination(file)
// 现在开始记录日志!
log.verbose("不太重要") // 优先级 1,银色的 VERBOSE
log.debug("需要调试的内容") // 优先级 2,绿色的 DEBUG
log.info("一条不错的信息") // 优先级 3,蓝色的 INFO
log.warning("哦不,这可不太妙") // 优先级 4,黄色的 WARNING
log.error("糟糕,发生了一个错误!") // 优先级 5,红色的 ERROR
// 记录任何内容!
log.verbose(123)
log.info(-123.45678)
log.warning(Date())
log.error(["我", "喜欢", "日志!"])
log.error(["name": "海狸先生", "address": "海狸小屋7号"])
// 可选地为日志消息添加上下文
console.format = "$L: $M $X"
log.debug("年龄", context: 123) // "DEBUG: 年龄 123"
log.info("我的数据", context: [1, "a", 2]) // "INFO: 我的数据 [1, \"a\", 2]"
另外,如果你使用 SwiftUI,可以考虑使用以下设置:
import SwiftyBeaver
let logger = SwiftyBeaver.self
@main
struct yourApp: App {
init() {
let console = ConsoleDestination()
logger.addDestination(console)
// 等等...
}
var body: some Scene {
WindowGroup {
}
}
}
服务器端 Swift
我们❤️服务器端 Swift 4 & 5,SwiftyBeaver 开箱即用地支持它!亲自尝试并在 Ubuntu Docker 容器中运行 SwiftyBeaver。只需安装 Docker,然后在 macOS 或 Ubuntu 上进入你的项目文件夹并输入:
# 创建 docker 镜像,构建 SwiftyBeaver 并运行单元测试
docker run --rm -it -v $PWD:/app swiftybeaver /bin/bash -c "cd /app ; swift build ; swift test"
# 可选地登录容器以运行 Swift CLI 并做更多操作
docker run --rm -it --privileged=true -v $PWD:/app swiftybeaver
最棒的是:对于流行的服务器端 Swift Web 框架 Vapor,你可以使用**我们的 Vapor 日志提供程序**,它让服务器日志记录再次变得棒极了 🙌
文档
入门:
日志目标:
高级主题:
许可证
SwiftyBeaver 框架基于 MIT 许可证 发布。