@@ -26,10 +26,69 @@ public class DynamicLoggingBuilderTest
2626 {
2727 [ "Logging:IncludeScopes" ] = "false" ,
2828 [ "Logging:Console:LogLevel:Default" ] = "Information" ,
29+ [ "Logging:Console:LogLevel:A.B.C.D" ] = "Critical" ,
2930 [ "Logging:LogLevel:Steeltoe.Extensions.Logging.Test" ] = "Information" ,
3031 [ "Logging:LogLevel:Default" ] = "Warning"
3132 } ;
3233
34+ [ Fact ]
35+ public void OnlyApplicableFilters_AreApplied ( )
36+ {
37+ // arrange
38+ var _appsettings = new Dictionary < string , string > ( )
39+ {
40+ [ "Logging:IncludeScopes" ] = "false" ,
41+ [ "Logging:LogLevel:Default" ] = "Information" ,
42+ [ "Logging:foo:LogLevel:A.B.C.D.TestClass" ] = "None"
43+ } ;
44+ var configuration = new ConfigurationBuilder ( ) . AddInMemoryCollection ( _appsettings ) . Build ( ) ;
45+ var services = new ServiceCollection ( )
46+ . AddLogging ( builder =>
47+ {
48+ builder . AddConfiguration ( configuration . GetSection ( "Logging" ) ) ;
49+ builder . AddDynamicConsole ( ) ;
50+ } )
51+ . BuildServiceProvider ( ) ;
52+
53+ // act
54+ var logger = services . GetService ( typeof ( ILogger < A . B . C . D . TestClass > ) ) as ILogger < A . B . C . D . TestClass > ;
55+
56+ // assert
57+ Assert . NotNull ( logger ) ;
58+ Assert . True ( ( logger ) . IsEnabled ( LogLevel . Information ) , "Information level should be enabled" ) ;
59+ Assert . False ( ( logger ) . IsEnabled ( LogLevel . Debug ) , "Debug level should NOT be enabled" ) ;
60+ }
61+
62+ [ Fact ]
63+ public void DynamicLevelSetting_WorksWith_ConsoleFilters ( )
64+ {
65+ // arrange
66+ var configuration = new ConfigurationBuilder ( ) . AddInMemoryCollection ( appsettings ) . Build ( ) ;
67+ var services = new ServiceCollection ( )
68+ . AddLogging ( builder =>
69+ {
70+ builder . AddConfiguration ( configuration . GetSection ( "Logging" ) ) ;
71+ builder . AddDynamicConsole ( ) ;
72+ } )
73+ . BuildServiceProvider ( ) ;
74+
75+ // act
76+ var logger = services . GetService ( typeof ( ILogger < A . B . C . D . TestClass > ) ) as ILogger < A . B . C . D . TestClass > ;
77+
78+ // assert
79+ Assert . NotNull ( logger ) ;
80+ Assert . True ( ( logger ) . IsEnabled ( LogLevel . Critical ) , "Critical level should be enabled" ) ;
81+ Assert . False ( ( logger ) . IsEnabled ( LogLevel . Error ) , "Error level should NOT be enabled" ) ;
82+ Assert . False ( ( logger ) . IsEnabled ( LogLevel . Warning ) , "Warning level should NOT be enabled" ) ;
83+ Assert . False ( ( logger ) . IsEnabled ( LogLevel . Debug ) , "Debug level should NOT be enabled" ) ;
84+ Assert . False ( ( logger ) . IsEnabled ( LogLevel . Trace ) , "Trace level should NOT be enabled yet" ) ;
85+
86+ // change the log level and confirm it worked
87+ var provider = services . GetRequiredService ( typeof ( ILoggerProvider ) ) as DynamicLoggerProvider ;
88+ provider . SetLogLevel ( "A.B.C.D" , LogLevel . Trace ) ;
89+ Assert . True ( ( logger ) . IsEnabled ( LogLevel . Trace ) , "Trace level should have been enabled" ) ;
90+ }
91+
3392 [ Fact ]
3493 public void AddConsole_Works_WithAddConfiguration ( )
3594 {
0 commit comments