TagLog 0.3

TagLog 0.3

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2016年7月
SPM支持 SPM

Sebastian Mecklenburg 负责。



TagLog 0.3

  • 作者:
  • Sebastian Mecklenburg

TagLog

一个可以通过标签过滤消息的小型日志框架。

原理和动机

在项目协作中,不同的程序通常负责不同任务。如果每个人都将调试消息输出到控制台,事情会很快变得混乱。通过给日志消息添加标签,可以避免这种情况。当你在登录功能工作时,可以将日志标记为“登录”,这样就不会被同事相关的视图布局等日志所干扰。

此外,日志记录器还提供了日志级别,可进一步细化显示的消息。

默认情况下,日志记录器记录一切,就像 Swift 的 print() 方法一样。为了过滤消息,需要做一些配置,可能是在应用启动时进行。请检查包含的示例应用中的 setupLogger() 方法了解如何操作。

基本用法

Log.trace("Entering example code")
Log.info("Some message")

Log.tag = "SomeTag"
Log.info("Some message that is not logged because the tag is missing")
Log.info("Some tagged message", tag: "SomeTag")
Log.info("Some tagged message that is not logged because the tag is wrong", tag: "SomeOtherTag")

Log.critical("Some important message that is logged no matter what")

Log.warn("Changing log level", tag: "SomeOtherTag")
Log.level = .Debug
Log.info("Some message that is logged because its log level is high enough", tag: "SomeTag")
Log.trace("Leaving example code, not logged because the log level is too low.", tag: "SomeTag")

请注意再次:在实际应用中,我认为最佳实践可能是在应用启动时配置记录器,然后保持不变。途中更改记录器只会导致混淆,并且没有明显的益处。请参阅包含的示例应用。

文档

无配置

此功能通过名为“Log”的结构体提供。它的所有方法都是静态的,因此您可以通过编写代码来开始记录,无需创建或配置任何对象。

Log.info("Some message")

并且日志记录器将像 Swift 的内置 print() 方法一样将所有消息打印到控制台。

标签

您可以为日志消息添加标签,并通过这些标签过滤它们。例如,您将消息标记为

Log.info("Some message", tag: "Some tag")

然后配置日志记录器以仅显示带有此标签的消息,如下所示

Log.tag = "Some tag"

并且日志记录器将仅打印标记为“Some tag”的日志。

您还可以设置多个标签,例如

Log.tags = ["Some tag", "Some other tag", "MyTag"]

将打印具有这些标签中任何一项的所有日志。

级别

日志记录器提供以下日志级别,按紧急程度排序

级别 用途
所有 打印所有内容
跟踪 用于非常详细的消息,例如“进入 someMethod”和“离开 some method”。
调试 用于调试信息,例如“值:\(someVariable)”
信息 对于应用程序事件,例如“应用启动”或“登录成功!”
警告 对于可能发生但可能不应该发生的应用程序事件,例如“登录失败!”
错误 对于确不应该发生但可能不一定会导致应用出错的事件,例如对象处于不一致状态。
严重 对于肯定会导致应用崩溃或出错的程序事件,例如尝试展示用户数据但未注册用户。
关闭 所有输出已禁用。

TagLog 提供以下日志方法

方法 用途
Log.trace() 打印带有“追踪”日志级别的消息
Log.debug() 打印带有“调试”日志级别的消息
Log.info() 打印带有“追踪”日志级别的消息
Log.warn() 打印带有“警告”日志级别的消息
Log.error() 打印带有“错误”日志级别的消息
Log.critical() 打印带有“严重”日志级别的消息

日志类具有 'level' 属性,您可以使用该属性设置所需的日志级别。然后它将显示所有该级别及以上紧急性的消息。如果您只想查看警告、错误和严重消息,请写入

Log.level = .Warning
Log.trace("Not printed")
Log.error("Printed")

为了立即查看消息的紧急程度,您可以激活日志级别图标,例如

Log.printLevelSymbol = true

然后输出将看起来像这样

Log level screenshot

时间戳

默认情况下,记录器会将毫秒级时间戳添加到消息中。您可以使用以下方式禁用它:

Log.printTimestamp = false
位置

默认情况下,记录器会将日志位置(文件、行、函数)添加到消息中。您可以使用以下方式禁用它:

Log.printLocation = false
打印机

“打印机”是执行实际输出的类。目前包含两个打印机,一个是控制台打印机(默认)和一个文件打印机。要激活向文件打印,请写入以下内容

Log.printer = LogFilePrinter()

要从文件访问日志,请写入以下内容

if let printer = Log.printer as? LogFilePrinter {
    let debugLog = printer.fullLog
}

在示例应用中,您可以在文本视图中显示日志文件内容。如果您想在未连接到 Xcode 或网络的设备上查看调试输出,这将非常有用。

关闭日志

通过设置日志级别为“关闭”,可以随时禁用日志记录。然而,代码仍然存在,增大了应用大小并且消耗了宝贵的处理器周期。要从应用中完全移除与日志相关的所有方法,您需要在构建设置中定义 'DISABLE_TAGLOG' 编译器标志,如下所示

Compiler flag screenshot