Test results Latest release swift 5.0 shield swift 5.1 shield swift 5.2 shield swift 5.3 shield swift 5.4 shield swift 5.5 shield swift dev shield Platforms: macOS, iOS, tvOS, watchOS, Linux

Logger (日志器)

Swift 的可配置日志记录。

声明多个日志通道。将日志消息和对象发送到这些通道。启用单个通道,对于禁用的通道,开销最小。

基本用法

只需导入模块并创建一或多个通道。

import Logger

let logger = Channel("com.acme.example.main")
let detailLogger = Channel("com.acme.example.detail")

要记录输出,只需将其写入通道。不同类型或级别的信息可以根据需要发送到不同的通道。

logger.log("Hello world!")
detailLogger.log("We just logged hello world in the main channel")

仅为调试版本记录日志

logger.debug("This will never show up in a release build")

配置

启用通道的列表在程序的运行之间是持久的,并且所有通道默认情况下都是禁用的。

您可以在运行时从命令行启用特定通道

.build/debug/Example -logs "+myChannel,+anotherChannel"

您也可以禁用通道

.build/debug/Example -logs "-myChannel,-anotherChannel"

或完全重置启用通道的列表

.build/debug/Example -logs "=someChannel,someOtherChannel"

讨论

这是我以前多次实现的模式的 Swift 版本 之前多次实现过。我经常将其用作学习一门语言的测试项目,但我也几乎在所有工作中都使用该库的功能。

主要思想是,在调试复杂问题时,编写大量的日志记录代码通常很有用。

能够保留这些代码,但在需要时才启用它,这是很健康的。能够在运行时,甚至在发布版本中,这样做也很有用,而禁用的日志记录代码不会对性能产生负面影响。

为了将其扩展到具有许多子系统的大型应用程序,您需要能够将日志输出分离到功能区域,以便您可以仅查看您感兴趣的部分。

其他功能和/或动机

此版本

此版本的座右铭:少即是多

ECLogging 的实现开始变得有点棘手。

这旨在成为一个精简的版本,只包含基本要素。

具体目标