AFNetworkActivityLogger 3.0.0

AFNetworkActivityLogger 3.0.0

测试测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最后发布2018年3月

MatttKevin HarwoodJeff Kelley 维护。



  • Mattt Thompson

AFNetworkActivityLogger

AFNetworkActivityLoggerAFNetworking 3.0 的一个扩展,可以记录发送和接收的网络请求。

AFNetworkActivityLogger 监听由 AFNetworking 发布的 AFNetworkingTaskDidStartNotificationAFNetworkingTaskDidFinishNotification 通知,这些通知在会话任务开始和完成时发布。为了进一步自定义日志输出,鼓励用户通过创建符合 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 文件。