AlamofireActivityLogger 2.5.0

AlamofireActivityLogger 2.5.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2018年9月
SPM支持 SPM

Manuel García-Estañ 维护。



AlamofireActivityLogger

Alamofire 提供响应序列化器的库,同时记录请求和响应。它提供了4个日志级别和一些配置日志的选项。

AlamofireActivityLogger 可用于

  • iOS (从 9.0 开始)
  • macOS (从 10.11 开始)
  • watchOS (从 2.0 开始)
  • tvOS (从 9.0 开始)

注意:此版本是为 Alamofire 4.xSwift 3 编写的。要支持 Swift 2Alamofire 3.x,请使用 版本 1.0.1

安装 AlamofireActivityLogger

使用 CocoaPods

将以下内容添加到您的 Podfile

pod 'AlamofireActivityLogger'

然后运行 $ pod install

最后,在需要使用 AlamofireActivityLogger 的类中

import AlamofireActivityLogger

如果您还没有安装或集成 CocoaPods 到您的项目中,您可以在这里了解如何做到这一点。

日志

要记录请求,只需写入

request(.get, url)
    .validate()
    .log()
}

此外,您还可以提供日志级别和一些选项

request(.get, url)
    .validate()
    .log(level: level, options: options, printer: myPrinter)
}

让我们看看级别选项

级别

是枚举类型LogLevel的实例。可用的值有:

  • none:不记录请求或响应。

  • all:记录请求的HTTP方法、URL、头部字段和请求体,以及响应的状态码、URL、头部字段、响应字符串和耗时时间。

  • info:记录请求的HTTP方法和URL,以及响应的状态码、URL和耗时时间。

  • error:记录请求的HTTP方法和URL,以及响应的状态码、URL和耗时时间,但仅限于失败的请求。

默认值是all

选项

是枚举类型LogOption的实例。可用的值有:

  • onlyDebug:仅当应用在Debug模式下时记录。

  • jsonPrettyPrint:在请求和响应上打印JSON体。

  • includeSeparator:在每部分的开始和结束时包含分隔符字符串。

默认值是[.onlyDebug, .jsonPrettyPrint, .includeSeparator]

自定义打印器

如果您使用第三方日志记录器,可以将它与AlamofireActivityLogger集成。要做到这一点,您必须提供一个Printer对象。

Printer是一个协议,只需一个方法

func print(_ string: String, phase: Phase)

例如,假设您已经将SwiftyBeaver集成到您的应用中。我们可以创建一个类似这样的SwiftyBeaverPrinter结构体:

struct SwiftyBeaverPrinter: Printer {
    func print(_ string: String, phase: Phase) {
        if phase.isError {
            log.error(string)
        }
        else {
            log.info(string)
        }
    }
}

并这样使用

request(.get, url)
    .validate()
    .log(printer: SwiftyBeaverPrinter())
}

默认情况下,使用一个NativePrinter实例。它只是使用原生的Swift.print打印信息。

支持请求

目前,AlamofireActivityLogger 支持对 DataRequestDownloadRequest 的支持。如果需要添加其他 Request 子类的支持,只需使其符合 LoggeableRequest 协议。查看 DataRequest 的实现以了解如何进行。

联系方式

Manuel García-Estañ Martínez
@manueGE

许可协议

AlamofireActivityLogger 在 MIT 许可协议 之下。