AFNetworkActivityLogger
AFNetworkActivityLogger
是 AFNetworking 3.0 的一个扩展,可以记录发送和接收的网络请求。
AFNetworkActivityLogger
监听由 AFNetworking 发布的AFNetworkingTaskDidStartNotification
和AFNetworkingTaskDidFinishNotification
通知,这些通知在会话任务开始和完成时发布。为了进一步自定义日志输出,鼓励用户通过创建符合AFNetworkActivityLoggerProtocol
的新对象来实现所需的函数。
2.x -> 3.x 迁移
3.0.0 版本包含以下破坏性 API 变更
- 日志的
level
属性现在位于单个唯一的日志记录器上,而不是共享日志记录器上。这使得可以为日志记录级别提供更多高级定制选项。 filterPredicate
属性现在位于单个唯一的日志记录器上,而不是共享日志记录器上。这允许对特定请求的日志记录提供更多高级定制选项。
用法
将以下代码添加到 AppDelegate.m -application:didFinishLaunchingWithOptions:
[[AFNetworkActivityLogger sharedLogger] startLogging];
现在所有由 AFURLSessionManager
创建的 NSURLSessionTask
对象都会将它们的请求和响应记录到控制台,就像这样
GET http://example.com/foo/bar.json
200 http://example.com/foo/bar.json [0.1860 s]
如果默认的日志级别过于详细——比如说,您只想知道请求失败时——那么更改它就像这样简单
[[AFNetworkActivityLogger sharedLogger] setLevel:AFLoggerLevelError];
日志级别
默认情况下,共享日志记录器配置为具有设置调试级别的 AFNetworkActivityConsoleLogger
。要更改级别,只需通过 loggers
属性访问日志记录器,并调整级别。提供了以下级别:
AFLoggerLevelOff
:不记录请求或响应。AFLoggerLevelDebug
:记录请求的 HTTP 方法、URL、头字段和请求体,以及响应的状态码、URL、头字段、响应字符串和耗时。AFLoggerLevelInfo
:记录请求的 HTTP 方法、URL 和响应的状态码、URL 以及耗时。AFLoggerLevelError
:记录请求的 HTTP 方法、URL 和响应的状态码、URL 以及耗时,但仅限失败的请求。
请求过滤
为了限制唯一日志记录器记录的请求,符合 AFNetworkActivityLoggerProtocol
的每个对象都有一个 filterPredicate
属性。如果谓词返回 true,则请求将不会被转发到日志记录器。例如,可以创建一个自定义文件日志记录器,该日志记录器仅记录对 http://httpbin.org
的请求,而控制台日志记录器可以用于记录应用程序中的所有错误。
AFNetworkActivityConsoleLogger *testLogger = [AFNetworkActivityConsoleLogger new];
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSURLRequest * _Nonnull request, NSDictionary<NSString *,id> * _Nullable bindings) {
return !([[request URL] baseURL] isEqualToString:@"httpbin.org"])
}];
[testLogger setFilterPredicate:predicate];
自定义日志记录器
默认情况下,共享日志记录器配置为 AFNetworkActivityConsoleLogger
。
要创建一个自定义日志记录器,创建一个新的符合 AFNetworkActivityLoggerProtocol
的对象,并将其添加到共享日志记录器中。请确保配置适当的默认日志级别。
许可协议
AFNetworkActivityLogger 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。