File tree Expand file tree Collapse file tree 2 files changed +38
-7
lines changed
ManagedCode.Communication.Tests/Extensions
ManagedCode.Communication/Logging Expand file tree Collapse file tree 2 files changed +38
-7
lines changed Original file line number Diff line number Diff line change @@ -54,4 +54,23 @@ public void ConfigureCommunication_WithLoggerFactory_ConfiguresLoggerAndReturns(
5454 var logger = CommunicationLogger . GetLogger ( ) ;
5555 logger . ShouldNotBeNull ( ) ;
5656 }
57+
58+ [ Fact ]
59+ public void GetLogger_WithDisposedServiceProvider_ShouldFallbackGracefully ( )
60+ {
61+ // Arrange
62+ var services = new ServiceCollection ( ) ;
63+ services . AddLogging ( ) ;
64+ using ( var serviceProvider = services . BuildServiceProvider ( ) )
65+ {
66+ CommunicationLogger . Configure ( serviceProvider ) ;
67+ }
68+
69+ // Act & Assert
70+ Should . NotThrow ( ( ) =>
71+ {
72+ var logger = CommunicationLogger . GetLogger ( ) ;
73+ logger . ShouldNotBeNull ( ) ;
74+ } ) ;
75+ }
5776}
Original file line number Diff line number Diff line change @@ -34,18 +34,30 @@ public static ILogger<Result> GetLogger()
3434
3535 private static ILogger < Result > CreateLogger ( )
3636 {
37- var logger = _serviceProvider ? . GetService < ILogger < Result > > ( ) ;
38- if ( logger != null )
39- return logger ;
37+ if ( _serviceProvider != null )
38+ {
39+ try
40+ {
41+ var logger = _serviceProvider . GetService < ILogger < Result > > ( ) ;
42+ if ( logger != null )
43+ {
44+ return logger ;
45+ }
46+ }
47+ catch ( ObjectDisposedException )
48+ {
49+ _serviceProvider = null ;
50+ }
51+ }
4052
4153 if ( _fallbackLoggerFactory != null )
4254 {
43- return new Logger < Result > ( _fallbackLoggerFactory ) ;
55+ return _fallbackLoggerFactory . CreateLogger < Result > ( ) ;
4456 }
4557
46- _lastResortLoggerFactory ??= LoggerFactory . Create ( builder =>
58+ _lastResortLoggerFactory ??= LoggerFactory . Create ( builder =>
4759 builder . SetMinimumLevel ( LogLevel . Warning ) ) ;
48-
49- return new Logger < Result > ( _lastResortLoggerFactory ) ;
60+
61+ return _lastResortLoggerFactory . CreateLogger < Result > ( ) ;
5062 }
5163}
You can’t perform that action at this time.
0 commit comments