如何使用 Alamofire(或 NSUrlSession)静音调试日志记录?
How to silence debug logging with Alamofire (or NSUrlSession)?
Xcode 12.2,
阿拉莫火 5.4.0,
Swift5
我有这段代码可以从后端请求数据,它在快乐流程中运行良好。
但是,如果由于某种原因无法访问后端,我会看到自动生成的日志记录,我希望它隐藏或静音。因为当我分析调试日志记录时它让我感到不安。
let request = AF.request("http://192.168.1.5:44444/api/users", headers: headers)
request.responseJSON { (data) in
switch data.result {
case .success:
print("Request Succes!")
case .failure(let errorData):
print("Request Failed")
print("\(errorData.errorDescription ?? "")")
}
}
错误输出:
Task <xxxxxxxx>.<1> HTTP load failed, 0/0 bytes (error code: -1004 [1:61])
Task <xxxxxxxx>.<1> finished with error [-1004] Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x600000d82250 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <xxxxxxxxx>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <xxxxxxxxx>.<1>"
), NSLocalizedDescription=Could not connect to the server., NSErrorFailingURLStringKey=http://192.168.1.5:44444/developer, NSErrorFailingURLKey=http://192.168.1.5:44444/developer, _kCFStreamErrorDomainKey=1}
Request Failed
URLSessionTask failed with error: Could not connect to the server.
我想去掉以下不是我生成的:
Task <xxxxxxxx>.<1> HTTP load failed, 0/0 bytes (error code: -1004 [1:61])
Task <xxxxxxxx>.<1> finished with error [-1004] Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x600000d82250 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <xxxxxxxxx>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <xxxxxxxxx>.<1>"
), NSLocalizedDescription=Could not connect to the server., NSErrorFailingURLStringKey=http://192.168.1.5:44444/developer, NSErrorFailingURLKey=http://192.168.1.5:44444/developer, _kCFStreamErrorDomainKey=1}
并且只看到:
Request Failed
URLSessionTask failed with error: Could not connect to the server.
这些是由 OS 而非 Alamofire 生成的系统日志。虽然您可以通过禁用 os
子系统来使它们静音,但我不推荐这样做,因为这会禁用您应用中的所有 os_log
和其他 os
模块功能,例如路标。使用反馈助手向 Apple 提出的功能请求可能最终说服他们让我们在 Xcode.
中过滤这些内容
我遇到了完全相同的问题,我只想查看我创建的调试条目,而不是系统创建的调试条目。我使用我自己的所有日志条目的前缀解决了这个问题。例如“[sync] 正在从服务器同步...”或“[sync] 无法连接到服务器。”。
现在您可以将 XCode 中的过滤器(在日志窗格的底部)设置为前缀“[sync]”,并且您只能看到自己的条目。这甚至在 运行 应用程序和日志进入时也有效!
Xcode 12.2, 阿拉莫火 5.4.0, Swift5
我有这段代码可以从后端请求数据,它在快乐流程中运行良好。 但是,如果由于某种原因无法访问后端,我会看到自动生成的日志记录,我希望它隐藏或静音。因为当我分析调试日志记录时它让我感到不安。
let request = AF.request("http://192.168.1.5:44444/api/users", headers: headers)
request.responseJSON { (data) in
switch data.result {
case .success:
print("Request Succes!")
case .failure(let errorData):
print("Request Failed")
print("\(errorData.errorDescription ?? "")")
}
}
错误输出:
Task <xxxxxxxx>.<1> HTTP load failed, 0/0 bytes (error code: -1004 [1:61])
Task <xxxxxxxx>.<1> finished with error [-1004] Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x600000d82250 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <xxxxxxxxx>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <xxxxxxxxx>.<1>"
), NSLocalizedDescription=Could not connect to the server., NSErrorFailingURLStringKey=http://192.168.1.5:44444/developer, NSErrorFailingURLKey=http://192.168.1.5:44444/developer, _kCFStreamErrorDomainKey=1}
Request Failed
URLSessionTask failed with error: Could not connect to the server.
我想去掉以下不是我生成的:
Task <xxxxxxxx>.<1> HTTP load failed, 0/0 bytes (error code: -1004 [1:61])
Task <xxxxxxxx>.<1> finished with error [-1004] Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x600000d82250 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <xxxxxxxxx>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <xxxxxxxxx>.<1>"
), NSLocalizedDescription=Could not connect to the server., NSErrorFailingURLStringKey=http://192.168.1.5:44444/developer, NSErrorFailingURLKey=http://192.168.1.5:44444/developer, _kCFStreamErrorDomainKey=1}
并且只看到:
Request Failed
URLSessionTask failed with error: Could not connect to the server.
这些是由 OS 而非 Alamofire 生成的系统日志。虽然您可以通过禁用 os
子系统来使它们静音,但我不推荐这样做,因为这会禁用您应用中的所有 os_log
和其他 os
模块功能,例如路标。使用反馈助手向 Apple 提出的功能请求可能最终说服他们让我们在 Xcode.
我遇到了完全相同的问题,我只想查看我创建的调试条目,而不是系统创建的调试条目。我使用我自己的所有日志条目的前缀解决了这个问题。例如“[sync] 正在从服务器同步...”或“[sync] 无法连接到服务器。”。
现在您可以将 XCode 中的过滤器(在日志窗格的底部)设置为前缀“[sync]”,并且您只能看到自己的条目。这甚至在 运行 应用程序和日志进入时也有效!