AFNetworkActivityLogger——打印网络请求日志

AFNetworkActivityLogger 是基于 AFNetworking 3.0 的扩展,可在发送和接收网络请求时记录网络请求,并在控制台打印输出。

AFNetworkActivityLogger 会监听 AFNetworkingTaskDidStartNotificationAFNetworkingTaskDidFinishNotification 通知, 这两个通知会随着 AFNetworking 会话任务的开始和结束而被发送。为了进一步定制日志输出,建议用户通过创建新的遵守 AFNetworkActivityLoggerProtocol 代理协议的对象来实现所需的功能。

用法

1. 通过 Cocoapods 导入

pod 'AFNetworkActivityLogger', '~> 3.0.0'

2. 配置 AFNetworkActivityLogger

添加以下代码到项目的 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];
[[AFNetworkActivityLogger sharedLogger] startLogging];

默认日志只会打印请求和响应的状态码和 URL,如果想打印 HTTP 请求和响应的内容,需要修改日志级别如下:

[[AFNetworkActivityLogger sharedLogger] setLogLevel:AFLoggerLevelDebug];
[[AFNetworkActivityLogger sharedLogger] startLogging];

日志级别

默认情况下,单例日志记录器([AFNetworkActivityLogger sharedLogger])是通过 AFNetworkActivityConsoleLogger 对象配置的,它的默认日志级别是 AFLoggerLevelInfo。要更改日志级别,只需要通过 loggers 属性访问日志记录器,然后调整日志级别。提供的日志级别有:

  • AFLoggerLevelOff:不记录请求或响应日志。
  • AFLoggerLevelDebug:记录请求的 HTTP 方法,URL路径,请求头和请求正文内容,以及响应的状态代码,URL路径,响应头,响应字符串和已用时间。
  • AFLoggerLevelInfo:记录请求的 HTTP 方法,URL路径,以及响应的状态代码,URL路径和已用时间。
  • AFLoggerLevelError:记录请求的 HTTP 方法,URL路径,以及响应的状态代码,URL路径和已用时间。,但仅仅是在请求失败时记录。

过滤日志

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];

自定义日志

默认情况下,单例日志记录器([AFNetworkActivityLogger sharedLogger])是通过 AFNetworkActivityConsoleLogger 对象配置的。
要创建自定义记录器,请创建遵守 AFNetworkActivityLoggerProtocol 代理协议的新的对象,并将其添加到共享记录器。确保并配置正确的默认日志记录级别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容