SWLogger
一个简单的Swift Logger
警告:此库正在进行积极开发,到目前为止所有测试都稳定。有关更多信息,请参阅TODO部分。
功能
- 每个日志的日志级别
- 每个日志的标签
- 运行时标签筛选
- 日志消息的日志文件和函数源
- 全局运行时按日志级别筛选日志
- 易于钩入以接收和处理日志
用法
记录一个调试消息
Log.d("My log")
记录一个错误消息
Log.e("My error log")
记录一个具有特定标签的消息
Log.i("My message", "TAG")
记录包含自定义额外数据的消息
Log.i("My message", "TAG", extra:123)
可用的日志级别
- 详细信息 (Log.v)
- 调试 (Log.d)
- 信息 (Log.i)
- 警告 (Log.w)
- 错误 (Log.e)
筛选消息
默认情况下,在发布版中只允许警告消息。在调试模式下,允许调试消息。
将应用的日志级别设置为错误(小于此级别的所有内容都不会被记录)
Log.setLevel(level: .error)
按标签(s)筛选日志
Log.setTagFilters(tags: ["MainVC"])
默认日志处理器
系统中已经有一个内置的日志处理器,且默认设置合理。如果需要不同的行为,建议实现自己的处理器并禁用默认处理器。
消息被记录的日志文件(包括行号),例如:MainViewController.swift:70
DefaultLogHandler.logFileDetails(true)
记录消息的日志函数,例如:tableView(_:cellForRowAt:)
DefaultLogHandler.logFunc(true)
默认文件处理器
提供另一个处理器的示例,即文件处理器,它允许将日志记录到磁盘。创建处理器时,会在Documents目录中创建一个带有时间戳的日志文件“2017-10-02-09-48-37995.log”。日志按到达的顺序写入此文件。此日志处理器默认不启用。以下为示例用法;
Log.addHandler(DefaultFileHandler())
实现自定义处理器
class MyLogHandler : LogHandler {
public func logMessage(log: LogLine, tag: String, level: LogLevel) {
// log.extra is available to use in any way desired. NSNull by default
}
}
注册日志处理器
Log.addHandler(MyLogHandler())
或移除日志处理器
Log.removeHandler(handler)
如果您想自行处理所有日志,请禁用默认日志处理器
Log.enableDefaultLogHandler = false
测试
查看SWLoggerTests/SwiftTests.swift以获取库的测试示例。
待办事项
- 线程安全
- 提供一种方法,使得处理器可以拥有与全局日志级别不同的日志级别