@@ -9,13 +9,22 @@ namespace TestBuildingBlocks;
9
9
public sealed partial class XUnitLogHttpMessageHandler : DelegatingHandler
10
10
{
11
11
private static readonly string BodySeparator = $ "{ Environment . NewLine } { Environment . NewLine } ";
12
+ private readonly LoggerFactory _loggerFactory ;
12
13
private readonly ILogger < XUnitLogHttpMessageHandler > _logger ;
13
14
14
15
public XUnitLogHttpMessageHandler ( ITestOutputHelper testOutputHelper )
15
16
{
16
17
ArgumentNullException . ThrowIfNull ( testOutputHelper ) ;
17
18
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 > ( ) ;
19
28
}
20
29
21
30
protected override async Task < HttpResponseMessage > SendAsync ( HttpRequestMessage request , CancellationToken cancellationToken )
@@ -53,11 +62,10 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
53
62
return response ;
54
63
}
55
64
56
- private static ILogger < XUnitLogHttpMessageHandler > CreateLogger ( ITestOutputHelper testOutputHelper )
65
+ protected override void Dispose ( bool disposing )
57
66
{
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 ( ) ;
61
69
}
62
70
63
71
[ LoggerMessage ( Level = LogLevel . Debug , SkipEnabledCheck = true , Message = "--> {RequestMessage}{Separator}{RequestBody}" ) ]
0 commit comments