Skip to content

Commit 7329594

Browse files
committed
Use source-generated structured logging, fixes rule CA1848: use the LoggerMessage delegates
1 parent 077a426 commit 7329594

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

test/TestBuildingBlocks/XUnitLogHttpMessageHandler.cs

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ namespace TestBuildingBlocks;
66
/// <summary>
77
/// Writes incoming and outgoing HTTP messages to the test output window.
88
/// </summary>
9-
public sealed class XUnitLogHttpMessageHandler : DelegatingHandler
9+
public sealed partial class XUnitLogHttpMessageHandler : DelegatingHandler
1010
{
11+
private static readonly string BodySeparator = $"{Environment.NewLine}{Environment.NewLine}";
1112
private readonly ILogger<XUnitLogHttpMessageHandler> _logger;
1213

1314
public XUnitLogHttpMessageHandler(ITestOutputHelper testOutputHelper)
@@ -23,11 +24,14 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
2324
{
2425
string? requestBody = request.Content == null ? null : await request.Content.ReadAsStringAsync(cancellationToken);
2526

26-
string requestMessage = string.IsNullOrEmpty(requestBody)
27-
? $"--> {request}"
28-
: $"--> {request}{Environment.NewLine}{Environment.NewLine}{requestBody}";
29-
30-
_logger.LogDebug(requestMessage);
27+
if (!string.IsNullOrEmpty(requestBody))
28+
{
29+
LogRequestMessage(request.ToString(), BodySeparator, requestBody);
30+
}
31+
else
32+
{
33+
LogRequestMessage(request.ToString(), string.Empty, string.Empty);
34+
}
3135
}
3236

3337
HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
@@ -36,11 +40,14 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
3640
{
3741
string responseBody = await response.Content.ReadAsStringAsync(cancellationToken);
3842

39-
string responseMessage = string.IsNullOrEmpty(responseBody)
40-
? $"<-- {response}"
41-
: $"<-- {response}{Environment.NewLine}{Environment.NewLine}{responseBody}";
42-
43-
_logger.LogDebug(responseMessage);
43+
if (!string.IsNullOrEmpty(responseBody))
44+
{
45+
LogResponseMessage(response.ToString(), BodySeparator, responseBody);
46+
}
47+
else
48+
{
49+
LogResponseMessage(response.ToString(), string.Empty, string.Empty);
50+
}
4451
}
4552

4653
return response;
@@ -52,4 +59,10 @@ private static ILogger<XUnitLogHttpMessageHandler> CreateLogger(ITestOutputHelpe
5259
var loggerFactory = new LoggerFactory([loggerProvider]);
5360
return loggerFactory.CreateLogger<XUnitLogHttpMessageHandler>();
5461
}
62+
63+
[LoggerMessage(Level = LogLevel.Debug, SkipEnabledCheck = true, Message = "--> {RequestMessage}{Separator}{RequestBody}")]
64+
private partial void LogRequestMessage(string requestMessage, string separator, string requestBody);
65+
66+
[LoggerMessage(Level = LogLevel.Debug, SkipEnabledCheck = true, Message = "<-- {ResponseMessage}{Separator}{ResponseBody}")]
67+
private partial void LogResponseMessage(string responseMessage, string separator, string responseBody);
5568
}

0 commit comments

Comments
 (0)