 			     .info,
 			     .warn,
 			     .error:
-				print("[Error] \(httpMethod) '\(responseURL.absoluteString)' \(String(response.statusCode)) [\(String(format: "%.04f", elapsedTime)) s]: \(error)")
+				print("[Error] \(httpMethod) '\(requestURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]:")
+				print(error)
 			default:
 				break
 			}
 		} else {
+			guard let response = task.response as? HTTPURLResponse else {
+				return
+			}
+			
 			switch level {
 			case .debug:
-				print("\(String(response.statusCode)) '\(responseURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]")
+				print("\(String(response.statusCode)) '\(requestURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]:")
 				
 				for (key, value) in response.allHeaderFields {
 					print("\(key): \(value)")
 				}
 			case .info:
-				print("\(String(response.statusCode)) '\(responseURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]")
+				print("\(String(response.statusCode)) '\(requestURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]")
 			default:
 				break
 			}

		guard let userInfo = notification.userInfo,
			let task = userInfo[Notification.Key.Task] as? URLSessionTask,
			let request = task.originalRequest,
			let response = task.response as? HTTPURLResponse,
			let httpMethod = request.httpMethod,
			let responseURL = response.url
			else {
				return
		}

		
		var elapsedTime: TimeInterval = 0.0
		
		if let startDate = startDates[task] {
			elapsedTime = Date().timeIntervalSince(startDate)
			startDates[task] = nil
		}
		
		if let error = task.error {
