@@ -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