我想为我的所有日志添加一个前缀。我试图子类化XCGLogger
以覆盖logln(...)
或debug(...)
函数。
但是我在使用这个时面临两个困难
- 编译器总是给我错误(见图)。
- 我不知道如何自定义给定的日志消息,因为参数是一个闭包。
谢谢
您在上面的代码中遇到的问题是您不清楚编译器super.logln
正在调用哪些方法。因为该方法有多个版本,具有各种函数,其中一些具有默认值,所以您需要显式包含足够多的参数,以便编译器知道您正在调用哪个版本。这就是为什么您的错误消息说“模棱两可......”
好的,我找到了。我们需要定义一个class
orstruct
符合LogFormatterProtocol
并实现format(logDetails: inout LogDetails, message: inout String) -> String
修改 inout 消息的功能。然后创建该类或结构的实例并将其添加到目标格式化程序数组:
let consoleDest = ConsoleDestination(owner: myLogger, identifier: "") // myLogger is an instance of XCGLogger
consoleDest.formatters = [MyFormatter()] // MyFormatter is a struct conforming to LogFormatterProtocol
myLogger.add(destination: consoleDest)