0

我想为我的所有日​​志添加一个前缀。我试图子类化XCGLogger以覆盖logln(...)debug(...)函数。

但是我在使用这个时面临两个困难

  1. 编译器总是给我错误(见图)。
  2. 我不知道如何自定义给定的日志消息,因为参数是一个闭包。

在此处输入图像描述

谢谢

4

2 回答 2

0

您在上面的代码中遇到的问题是您不清楚编译器super.logln正在调用哪些方法。因为该方法有多个版本,具有各种函数,其中一些具有默认值,所以您需要显式包含足够多的参数,以便编译器知道您正在调用哪个版本。这就是为什么您的错误消息说“模棱两可......”

于 2016-09-20T08:44:59.417 回答
0

好的,我找到了。我们需要定义一个classorstruct符合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)
于 2016-09-19T11:06:30.007 回答