📜
Skribent
Norsk: skribent m1 (fra latin av scribere 'skrive') forfatter, særlig av essay og avhandlinger eller artikler i dagspressen
Deutsch: Vielschreiber, Schreiberling (zu lateinisch scribens (Genitiv: scribentis), 1. Partizip von: scribere = schreiben)
Skribent 是一个简单的零配置日志记录器,可以在某些点进行扩展,并且是类型安全的
Skribent.log(level: .info("This is an info"))
Skribent.log(level: .debug("This is a debug"))
Skribent.log(level: .error("This is an error", AppStoreErrors.appStoreOffline))
Skribent.log(level: .warning("This is a warning"))
记录了什么以及在哪里
Skribent 尽可能地使用由 Apple 提供的统一日志系统。这意味着所有消息都会记录到开发者控制台和设备控制台,并且 levels error
和 warning
会持久化到数据存储。这意味着即使在 App 停止运行之后,这些日志仍然可以访问。
统一日志系统仅适用于在 OSX 10.12、iOS 10.0、watchOS 3.0、tvOS 10.0 或更新的系统中运行的 App。对于旧系统,使用 NSLog
类进行日志记录,这也会记录到开发者和设备控制台。但是没有持久化功能。
生产模式
在 production 模式中不建议向设备控制台记录,因此可以使用标志来禁用控制台记录。
Skribent.runInProductionMode = true
即使在 active production 模式下,日志仍然会传递给插件。
特性
标签
标签是属于一起的日志分组。标签通过名称和前缀定义,在日志中显示。为了整理日志以便调试或禁用在生产中的某些日志,可以忽略标签。
extension Tag {
static var appStore: Tag {
return Tag(name: "App Store", prefix: "💰")
}
}
Skribent.shared.ignore(tag: .appStore)
Skribent.shared.unignore(tag: .appStore)
被忽略标签的日志不会传递给插件。
插件
可以实现插件,这些插件可以获取与日志方法相同的信息,并且可以获取生产模式
class ExamplePlugin: Plugin {
func log(level: LogLevel, tag: Tag?, file: String, functionName: String, line: Int, production: Bool) {
// log to Crashlytics/Logstash
}
}
let plugin = ExamplePlugin()
Skribent.add(plugin: plugin)
安装
CocoaPods
使用CocoaPods,将以下内容添加到您的Podfile
文件中
target 'yourtarget' do
pod Skribent
end
Carthage
使用Carthage,将以下内容添加到您的 Cartfile 文件中
github "namics/swift-skribent"