Skip to content

Commit cba6a90

Browse files
feat(logging): separate fields (#91)
1 parent 5ee0132 commit cba6a90

File tree

2 files changed

+78
-20
lines changed

2 files changed

+78
-20
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sketch7/fluently-http-client",
3-
"version": "4.1.0",
3+
"version": "4.2.0",
44
"versionSuffix": "",
55
"scripts": {
66
"pack": "bash ./tools/pack.sh",

src/FluentlyHttpClient/Middleware/LoggerHttpMiddleware.cs

Lines changed: 77 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ ILoggerFactory loggerFactory
5757
public async Task<FluentHttpResponse> Invoke(FluentHttpMiddlewareContext context)
5858
{
5959
var request = context.Request;
60+
6061
if (!_logger.IsEnabled(LogLevel.Information))
6162
return await _next(context);
6263

@@ -68,30 +69,56 @@ public async Task<FluentHttpResponse> Invoke(FluentHttpMiddlewareContext context
6869
&& !options.ShouldLogDetailedResponse.GetValueOrDefault(false))
6970
{
7071
response = await _next(context);
71-
_logger.LoggerHttp_CondensedRequest(request.Method, request.Uri!, response.StatusCode, watch.GetElapsedTime().TotalMilliseconds);
72+
_logger.LoggerHttp_CondensedRequest(
73+
request.Message.Version,
74+
request.Method,
75+
request.Uri!,
76+
response.StatusCode,
77+
watch.GetElapsedTime().TotalMilliseconds
78+
);
7279
return response;
7380
}
7481

7582
if (!(options.ShouldLogDetailedRequest ?? false))
76-
_logger.LoggerHttp_Request(request);
83+
_logger.LoggerHttp_Request(request.Message.Version, request.Method, request.Uri!);
7784
else
7885
{
7986
string? requestContent = null;
8087
if (request.Message.Content != null)
8188
requestContent = await request.Message.Content.ReadAsStringAsync();
82-
_logger.LoggerHttp_RequestDetailed(request, request.Headers.ToFormattedString(), requestContent);
89+
_logger.LoggerHttp_RequestDetailed(
90+
request.Message.Version,
91+
request.Method,
92+
request.Uri!,
93+
request.Headers.ToFormattedString(),
94+
requestContent
95+
);
8396
}
8497

8598
response = await _next(context);
8699
var stopwatchElapsed = watch.GetElapsedTime();
87100
if (response.Content == null || !(options.ShouldLogDetailedResponse ?? false))
88101
{
89-
_logger.LoggerHttp_Response(response, stopwatchElapsed.TotalMilliseconds);
102+
_logger.LoggerHttp_Response(
103+
response.Message.Version,
104+
request.Method,
105+
request.Uri!,
106+
response.StatusCode,
107+
stopwatchElapsed.TotalMilliseconds
108+
);
90109
return response;
91110
}
92111

93112
var responseContent = await response.Content.ReadAsStringAsync();
94-
_logger.LoggerHttp_ResponseDetailed(response, response.Headers.ToFormattedString(), responseContent, stopwatchElapsed.TotalMilliseconds);
113+
_logger.LoggerHttp_ResponseDetailed(
114+
response.Message.Version,
115+
request.Method,
116+
request.Uri!,
117+
response.StatusCode,
118+
response.Headers.ToFormattedString(),
119+
responseContent,
120+
stopwatchElapsed.TotalMilliseconds
121+
);
95122
return response;
96123
}
97124
}
@@ -166,18 +193,49 @@ public static FluentHttpClientBuilder UseLogging(this FluentHttpClientBuilder bu
166193

167194
internal static partial class LogExtensions
168195
{
169-
[LoggerMessage(LogLevel.Information, "HTTP request [{method}] {requestUrl} responded {statusCode:D} in {elapsed:n0}ms")]
170-
internal static partial void LoggerHttp_CondensedRequest(this ILogger logger, HttpMethod method, Uri requestUrl, HttpStatusCode statusCode, double elapsed);
171-
172-
[LoggerMessage(LogLevel.Information, "Pre - request... {request}")]
173-
internal static partial void LoggerHttp_Request(this ILogger logger, FluentHttpRequest request);
174-
175-
[LoggerMessage(LogLevel.Information, "Pre-request... {request}\nHeaders: {headers}\nContent: {requestContent}")]
176-
internal static partial void LoggerHttp_RequestDetailed(this ILogger logger, FluentHttpRequest request, string headers, string? requestContent);
177-
178-
[LoggerMessage(LogLevel.Information, "Post-request... {response} in {elapsed:n0}ms")]
179-
internal static partial void LoggerHttp_Response(this ILogger logger, FluentHttpResponse response, double elapsed);
180-
181-
[LoggerMessage(LogLevel.Information, "Post-request... {response}\nHeaders: {headers}\nContent: {responseContent} in {elapsed:n0}ms")]
182-
internal static partial void LoggerHttp_ResponseDetailed(this ILogger logger, FluentHttpResponse response, string headers, string? responseContent, double elapsed);
196+
[LoggerMessage(LogLevel.Information, "HTTP request ({httpVersion}) [{method}] '{requestUrl}' responded {statusCode:D} in {elapsed:n0}ms")]
197+
internal static partial void LoggerHttp_CondensedRequest(
198+
this ILogger logger,
199+
Version httpVersion,
200+
HttpMethod method,
201+
Uri requestUrl,
202+
HttpStatusCode statusCode,
203+
double elapsed
204+
);
205+
206+
[LoggerMessage(LogLevel.Information, "Pre - request... ({httpVersion}) [{method}] '{requestUrl}'")]
207+
internal static partial void LoggerHttp_Request(this ILogger logger, Version httpVersion, HttpMethod method, Uri requestUrl);
208+
209+
[LoggerMessage(LogLevel.Information, "Pre-request... ({httpVersion}) [{method}] '{requestUrl}' \nHeaders: {headers}\nContent: {requestContent}")]
210+
internal static partial void LoggerHttp_RequestDetailed(
211+
this ILogger logger,
212+
Version httpVersion,
213+
HttpMethod method,
214+
Uri requestUrl,
215+
string headers,
216+
string? requestContent
217+
);
218+
219+
[LoggerMessage(LogLevel.Information, "Post-request... ({httpVersion}) [{method}] '{requestUrl}' responded {statusCode:D} in {elapsed:n0}ms")]
220+
internal static partial void LoggerHttp_Response(
221+
this ILogger logger,
222+
Version httpVersion,
223+
HttpMethod method,
224+
Uri requestUrl,
225+
HttpStatusCode statusCode,
226+
double elapsed
227+
);
228+
229+
[LoggerMessage(LogLevel.Information, "Post-request... ({httpVersion}) [{method}] '{requestUrl}' responded {statusCode:D} " +
230+
"\nHeaders: {headers}\nContent: {responseContent} in {elapsed:n0}ms")]
231+
internal static partial void LoggerHttp_ResponseDetailed(
232+
this ILogger logger,
233+
Version httpVersion,
234+
HttpMethod method,
235+
Uri requestUrl,
236+
HttpStatusCode statusCode,
237+
string headers,
238+
string? responseContent,
239+
double elapsed
240+
);
183241
}

0 commit comments

Comments
 (0)