Swift的日志框架
用法
Log.debug("Current loggers: \(Log.loggers)")
Log.warn("Using formatter: \(Log.loggers.first!.formatter)")
Log.error(TestError.invalid)
Log.severe("some error")
打印
04-21 13:04:30.040 LoggTests.swift testFileLogger() [14] ℹ️ Debug: Current loggers: [Logg.ConsoleLogger]
04-21 13:04:30.041 LoggTests.swift testFileLogger() [15] ⚠️ Warning: Using formatter: Logg.DefaultFormatter
04-21 13:04:30.041 LoggTests.swift testFileLogger() [16] ❗ Error: invalid
04-21 13:04:30.041 LoggTests.swift testFileLogger() [17] ‼️ Severe: some error
配置
Log
类负责将消息调度到所有日志记录器,你可以通过修改日志记录器的静态属性来配置这些日志记录器。
if debug {
Log.loggers = [ConsoleLogger()]
} else {
Log.loggers = [CustomLogger(level: [.error, .severe])]
}
每个日志记录器都有一个名为 level 的属性,你可以自定义它。
let consoleLogger = Log.loggers.first
consoleLogger?.level = [.debug, .warning]
level 是一个包含4个基本值的 OptionSet
:debug
、warning
、error
、severe
,以及额外的 all
和 none
。
日志记录器
您可以使用自定义并注册自己的日志记录器,只需实现Logger
协议并将其实例添加到Log
类的loggers
静态属性中。该Logger
协议定义了几个属性level
(级别)和formatter
(格式化器),以及四个函数:debug
、warn
、error
和severe
,它们对应于日志级别。
格式化器
您可以创建您自己的格式化器并将其用于您想要的日志记录器,只需创建一个实现Formatter
协议的类并将其分配给日志记录器即可。
let consoleLogger = Log.loggers.first
consoleLogger?.formatter = CustomFormatter()