Index: sdk/lib/_internal/pub/lib/src/http.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/http.dart b/sdk/lib/_internal/pub/lib/src/http.dart |
index eecfda3fcdd86b5435fde55a418df65aa1688e6c..2bb43e26931a25384f18329a19b416072fb7eaaf 100644 |
--- a/sdk/lib/_internal/pub/lib/src/http.dart |
+++ b/sdk/lib/_internal/pub/lib/src/http.dart |
@@ -31,6 +31,8 @@ bool _initializedSecureSocket = false; |
/// An HTTP client that transforms 40* errors and socket exceptions into more |
/// user-friendly error messages. |
class PubHttpClient extends http.BaseClient { |
+ final _requestStopwatches = new Map<http.BaseRequest, Stopwatch>(); |
+ |
http.Client inner; |
PubHttpClient([http.Client inner]) |
@@ -41,6 +43,7 @@ class PubHttpClient extends http.BaseClient { |
} |
Future<http.StreamedResponse> send(http.BaseRequest request) { |
+ _requestStopwatches[request] = new Stopwatch()..start(); |
_logRequest(request); |
// TODO(nweiz): remove this when issue 4061 is fixed. |
@@ -128,8 +131,10 @@ class PubHttpClient extends http.BaseClient { |
var responseLog = new StringBuffer(); |
var request = response.request; |
+ var stopwatch = _requestStopwatches.remove(request)..stop(); |
responseLog.writeln("HTTP response ${response.statusCode} " |
"${response.reasonPhrase} for ${request.method} ${request.url}"); |
+ responseLog.write("took ${stopwatch.elapsed}"); |
response.headers.forEach((name, value) => |
responseLog.writeln(_logField(name, value))); |