 			return
 		}
 		
+		var elapsedTime: TimeInterval = 0.0
+		
+		if let startDate = tasksStartDates[task] {
+			elapsedTime = Date().timeIntervalSince(startDate)
+			tasksStartDates[task] = nil
+		}
+		
 		if let error = task.error {
 			switch level {
 			case .debug,
 			     .info,
 			     .warn,
 			     .error:
-				print("[Error] \(httpMethod) '\(responseURL.absoluteString)' \(String(response.statusCode)): \(error)")
+				print("[Error] \(httpMethod) '\(responseURL.absoluteString)' \(String(response.statusCode)) [\(String(format: "%.04f", elapsedTime)) s]: \(error)")
 			default:
 				break
 			}
 		} else {
 			switch level {
 			case .debug:
-				print("\(String(response.statusCode)) '\(responseURL.absoluteString)'")
+				print("\(String(response.statusCode)) '\(responseURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]")
 				
 				for (key, value) in response.allHeaderFields {
 					print("\(key): \(value)")
 				}
 			case .info:
-				print("\(String(response.statusCode)) '\(responseURL.absoluteString)'")
+				print("\(String(response.statusCode)) '\(responseURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]")
 			default:
 				break
 			}

			return
		}
		
		switch level {
		case .debug:
			print("\(httpMethod) '\(requestURL.absoluteString)'")

	/// Omit requests which match the specified predicate, if provided.
	public var filterPredicate: NSPredicate?
	
	private var tasksStartDates: [URLSessionTask: Date]
	
	// MARK: - Internal - Initialization
	
	init() {
		level = .info
		tasksStartDates = [URLSessionTask: Date]()
	}
	
	deinit {
