AlamofireActivityLogger
为 Alamofire 提供响应序列化器的库,同时记录请求和响应。它提供了4个日志级别和一些配置日志的选项。
AlamofireActivityLogger 可用于
- iOS (从 9.0 开始)
- macOS (从 10.11 开始)
- watchOS (从 2.0 开始)
- tvOS (从 9.0 开始)
注意:此版本是为 Alamofire 4.x 和 Swift 3 编写的。要支持 Swift 2 和 Alamofire 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 支持对 DataRequest
和 DownloadRequest
的支持。如果需要添加其他 Request
子类的支持,只需使其符合 LoggeableRequest
协议。查看 DataRequest
的实现以了解如何进行。
联系方式
Manuel García-Estañ Martínez
@manueGE
许可协议
AlamofireActivityLogger 在 MIT 许可协议 之下。