@@ -9,13 +9,22 @@ namespace TestBuildingBlocks;
99public sealed partial class XUnitLogHttpMessageHandler : DelegatingHandler
1010{
1111 private static readonly string BodySeparator = $ "{ Environment . NewLine } { Environment . NewLine } ";
12+ private readonly LoggerFactory _loggerFactory ;
1213 private readonly ILogger < XUnitLogHttpMessageHandler > _logger ;
1314
1415 public XUnitLogHttpMessageHandler ( ITestOutputHelper testOutputHelper )
1516 {
1617 ArgumentNullException . ThrowIfNull ( testOutputHelper ) ;
1718
18- _logger = CreateLogger ( testOutputHelper ) ;
19+ #pragma warning disable CA2000 // Dispose objects before losing scope
20+ // Justification: LoggerFactory.AddProvider takes ownership (passing the provider as a constructor parameter does not).
21+ var loggerProvider = new XUnitLoggerProvider ( testOutputHelper , null , LogOutputFields . Message ) ;
22+ #pragma warning restore CA2000 // Dispose objects before losing scope
23+
24+ _loggerFactory = new LoggerFactory ( ) ;
25+ _loggerFactory . AddProvider ( loggerProvider ) ;
26+
27+ _logger = _loggerFactory . CreateLogger < XUnitLogHttpMessageHandler > ( ) ;
1928 }
2029
2130 protected override async Task < HttpResponseMessage > SendAsync ( HttpRequestMessage request , CancellationToken cancellationToken )
@@ -53,11 +62,10 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
5362 return response ;
5463 }
5564
56- private static ILogger < XUnitLogHttpMessageHandler > CreateLogger ( ITestOutputHelper testOutputHelper )
65+ protected override void Dispose ( bool disposing )
5766 {
58- var loggerProvider = new XUnitLoggerProvider ( testOutputHelper , null , LogOutputFields . Message ) ;
59- var loggerFactory = new LoggerFactory ( [ loggerProvider ] ) ;
60- return loggerFactory . CreateLogger < XUnitLogHttpMessageHandler > ( ) ;
67+ base . Dispose ( disposing ) ;
68+ _loggerFactory . Dispose ( ) ;
6169 }
6270
6371 [ LoggerMessage ( Level = LogLevel . Debug , SkipEnabledCheck = true , Message = "--> {RequestMessage}{Separator}{RequestBody}" ) ]
0 commit comments