Skip to content

Commit 30d4c47

Browse files
improvements
Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
1 parent 5b7dd63 commit 30d4c47

1 file changed

Lines changed: 46 additions & 41 deletions

File tree

Sources/NextcloudKit/NKMonitor.swift

Lines changed: 46 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,63 +14,68 @@ final class NKMonitor: EventMonitor, Sendable {
1414
}
1515

1616
func requestDidResume(_ request: Request) {
17-
switch NKLogFileManager.shared.logLevel {
18-
case .normal:
19-
// General-purpose log: full Request description
20-
nkLog(info: "Request started: \(request)")
21-
case .verbose:
22-
// Full dump: headers + body
23-
let headers = request.request?.allHTTPHeaderFields?.description ?? "None"
24-
let body = request.request?.httpBody.flatMap { String(data: $0, encoding: .utf8) } ?? "None"
25-
nkLog(debug: "Request started: \(request)")
26-
nkLog(debug: "Headers: \(headers)")
27-
nkLog(debug: "Body: \(body)")
28-
default:
29-
break
17+
DispatchQueue.global(qos: .utility).async {
18+
switch NKLogFileManager.shared.logLevel {
19+
case .normal:
20+
// General-purpose log: full Request description
21+
nkLog(info: "Request started: \(request)")
22+
case .verbose:
23+
// Full dump: headers + body
24+
let headers = request.request?.allHTTPHeaderFields?.description ?? "None"
25+
let body = request.request?.httpBody.flatMap { String(data: $0, encoding: .utf8) } ?? "None"
26+
27+
nkLog(debug: "Request started: \(request)")
28+
nkLog(debug: "Headers: \(headers)")
29+
nkLog(debug: "Body: \(body)")
30+
default:
31+
break
32+
}
3033
}
3134
}
3235

3336
func request<Value>(_ request: DataRequest, didParseResponse response: AFDataResponse<Value>) {
3437
nkCommonInstance.delegate?.request(request, didParseResponse: response)
3538

39+
// Check for header and account error code tracking
3640
if let statusCode = response.response?.statusCode,
3741
let headerCheckInterceptor = request.request?.allHTTPHeaderFields?[nkCommonInstance.headerCheckInterceptor],
3842
headerCheckInterceptor.lowercased() == "true",
3943
let account = request.request?.allHTTPHeaderFields?[nkCommonInstance.headerAccount] {
4044
nkCommonInstance.appendServerErrorAccount(account, errorCode: statusCode)
4145
}
42-
guard let date = self.nkCommonInstance.convertDate(Date(), format: "yyyy-MM-dd' 'HH:mm:ss") else {
43-
return
44-
}
45-
let responseResultString = String("\(response.result)")
46-
let responseDebugDescription = String("\(response.debugDescription)")
47-
let responseAllHeaderFields = String("\(String(describing: response.response?.allHeaderFields))")
4846

49-
switch NKLogFileManager.shared.logLevel {
50-
case .normal:
51-
if let request = response.request {
52-
let requestString = "\(request)"
53-
nkLog(info: "Network response request: " + requestString + ", result: " + responseResultString)
54-
} else {
55-
nkLog(info: "Network response result: " + responseResultString)
56-
}
57-
case .compact:
58-
if let method = request.request?.httpMethod,
59-
let url = request.request?.url?.absoluteString,
60-
let code = response.response?.statusCode {
61-
// Determine response status string
62-
let responseStatus = (200..<300).contains(code) ? "RESPONSE: SUCCESS" : "RESPONSE: ERROR"
47+
let date = nkCommonInstance.convertDate(Date(), format: "yyyy-MM-dd' 'HH:mm:ss") ?? "unknown"
48+
let resultString = String(describing: response.result)
49+
50+
DispatchQueue.global(qos: .utility).async {
51+
switch NKLogFileManager.shared.logLevel {
52+
case .normal:
53+
if let request = response.request {
54+
nkLog(info: "Network response request: \(request), result: \(resultString)")
55+
} else {
56+
nkLog(info: "Network response result: \(resultString)")
57+
}
58+
59+
case .compact:
60+
if let method = request.request?.httpMethod,
61+
let url = request.request?.url?.absoluteString,
62+
let code = response.response?.statusCode {
63+
64+
let responseStatus = (200..<300).contains(code) ? "RESPONSE: SUCCESS" : "RESPONSE: ERROR"
65+
let errorCode = response.error.map { " (\($0._code))" } ?? ""
66+
nkLog(network: "\(code) \(method) \(url) \(responseStatus)\(errorCode)")
67+
}
68+
69+
case .verbose:
70+
let debugDesc = String(describing: response)
71+
let headerFields = String(describing: response.response?.allHeaderFields ?? [:])
6372

64-
// Extract error code if any
65-
let errorCode = response.error.map { " (\($0._code))" } ?? ""
73+
nkLog(debug: "Network response result: \(date) " + debugDesc)
74+
nkLog(debug: "Network response all headers: \(date) " + headerFields)
6675

67-
nkLog(network: "\(code) \(method) \(url) \(responseStatus)\(errorCode)")
76+
default:
77+
break
6878
}
69-
case .verbose:
70-
nkLog(debug: "Network response result: \(date) " + responseDebugDescription)
71-
nkLog(debug: "Network response all headers: \(date) " + responseAllHeaderFields)
72-
default:
73-
break
7479
}
7580
}
7681
}

0 commit comments

Comments
 (0)