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 的实现开始变得有点棘手。
这旨在成为一个精简的版本,只包含基本要素。
具体目标