一个 SwiftLog 的日志后端,可以将日志消息发送到 SwiftyBeaver。
将 LoggingSwiftyBeaver 包作为依赖项添加到您的 Package.swift
文件中。
.package(url: "https://github.com/ShivaHuang/swift-log-SwiftyBeaver.git", from: "0.1.0")
将 LoggingSwiftyBeaver 添加到您的目标依赖项中。
.target(
name: "Example",
dependencies: [
.product(name: "LoggingSwiftyBeaver", package: "swift-log-SwiftyBeaver")
])
import Logging
import LoggingSwiftyBeaver
let logger = Logger(label: "Example") { (label) in
SwiftyBeaver.LogHandler(label, destinations: [
ConsoleDestination()
])
}
或者,您可以仅在 DEBUG
构建中使用 SwiftyBeaver
,而在 RELEASE
构建中不打印任何内容
let logger: Logger = {
Logger(label: "Example") { (label) in
#if DEBUG
return SwiftyBeaver.LogHandler(label, destinations: [
ConsoleDestination()
])
#else
return Logging.SwiftLogNoOpLogHandler()
#endif
}
}()
此外,您可以自定义格式并将控制台输出设置为短时间、日志级别和消息
let logger: Logger = {
Logger(label: "Example") { (label) in
#if DEBUG
let console: ConsoleDestination = {
let destination = ConsoleDestination()
destination.format = "$DHH:mm:ss$d $L $M"
return destination
}()
return SwiftyBeaver.LogHandler(label, destinations: [
console
])
#else
return Logging.SwiftLogNoOpLogHandler()
#endif
}
}()
// logging an informational message
logger.info("Hello World!")
// ouch, something went wrong
logger.error("Houston, we have a problem: \(problem)")
按级别区分日志是一个好习惯。但是,SwiftLog
定义了 7 个级别,而 SwiftyBeaver
只有 5 个。因此,SwiftLog
和 SwiftyBeaver
之间不可能实现一对一的映射。以下是映射表
SwiftLog | SwiftyBeaver |
---|---|
trace |
verbose |
debug |
debug |
info |
info |
notice |
warning |
warning |
warning |
error |
error |
critical |
error |
该程序由 @shivahuang 开发,作为 Taiwan Social Distancing 的一部分。