@@ -96,7 +96,7 @@ public void ConfigureLogging_SentryAspNetCoreOptions_FlushOnCompletedRequestTrue
9696 }
9797
9898 [ Theory , MemberData ( nameof ( ExpectedServices ) ) ]
99- public void UseSentry_Parameterless_ServicesRegistered ( Action < IServiceCollection > assert )
99+ public void ConfigureLogging_Parameterless_ServicesRegistered ( Action < IServiceCollection > assert )
100100 {
101101 var sut = new SentryStartup ( ) ;
102102 sut . ConfigureLogging ( WebHostBuilderContext , LoggingBuilder ) ;
@@ -121,4 +121,64 @@ public static IEnumerable<object[]> ExpectedServices()
121121 new Action < IServiceCollection > ( c =>
122122 Assert . Single ( c , d => d . ImplementationType == typeof ( AspNetCoreEventProcessor ) ) ) } ;
123123 }
124+
125+ [ Fact ]
126+ public void ConfigureLogging_Logging_AddLoggerProviders ( )
127+ {
128+ LoggingBuilder . Services . Configure < SentryAspNetCoreOptions > ( options =>
129+ {
130+ options . EnableLogs = true ;
131+ options . InitializeSdk = false ;
132+ } ) ;
133+
134+ var sut = new SentryStartup ( ) ;
135+ sut . ConfigureLogging ( WebHostBuilderContext , LoggingBuilder ) ;
136+
137+ using var serviceProvider = LoggingBuilder . Services . BuildServiceProvider ( ) ;
138+ var providers = serviceProvider . GetRequiredService < IEnumerable < ILoggerProvider > > ( ) . ToArray ( ) ;
139+
140+ providers . Should ( ) . HaveCount ( 2 ) ;
141+ providers [ 0 ] . Should ( ) . BeOfType < SentryAspNetCoreLoggerProvider > ( ) ;
142+ providers [ 1 ] . Should ( ) . BeOfType < SentryAspNetCoreStructuredLoggerProvider > ( ) ;
143+ }
144+
145+ [ Fact ]
146+ public void ConfigureLogging_Logging_AddLoggerFilterRules ( )
147+ {
148+ LoggingBuilder . Services . Configure < SentryAspNetCoreOptions > ( options =>
149+ {
150+ options . EnableLogs = true ;
151+ options . InitializeSdk = false ;
152+ } ) ;
153+
154+ var sut = new SentryStartup ( ) ;
155+ sut . ConfigureLogging ( WebHostBuilderContext , LoggingBuilder ) ;
156+
157+ using var serviceProvider = LoggingBuilder . Services . BuildServiceProvider ( ) ;
158+ var loggerFilterOptions = serviceProvider . GetRequiredService < IOptions < LoggerFilterOptions > > ( ) . Value ;
159+
160+ loggerFilterOptions . Rules . Should ( ) . HaveCount ( 3 ) ;
161+ var one = loggerFilterOptions . Rules [ 0 ] ;
162+ var two = loggerFilterOptions . Rules [ 1 ] ;
163+ var three = loggerFilterOptions . Rules [ 2 ] ;
164+
165+ one . ProviderName . Should ( ) . Be ( typeof ( SentryAspNetCoreLoggerProvider ) . FullName ) ;
166+ one . CategoryName . Should ( ) . BeNull ( ) ;
167+ one . LogLevel . Should ( ) . BeNull ( ) ;
168+ one . Filter . Should ( ) . NotBeNull ( ) ;
169+ one . Filter ! . Invoke ( null , null , LogLevel . None ) . Should ( ) . BeTrue ( ) ;
170+ one . Filter . Invoke ( "" , "" , LogLevel . None ) . Should ( ) . BeTrue ( ) ;
171+ one . Filter . Invoke ( "type" , "category" , LogLevel . None ) . Should ( ) . BeTrue ( ) ;
172+ one . Filter . Invoke ( null , typeof ( Microsoft . AspNetCore . Diagnostics . ExceptionHandlerMiddleware ) . FullName , LogLevel . None ) . Should ( ) . BeFalse ( ) ;
173+
174+ two . ProviderName . Should ( ) . Be ( typeof ( SentryAspNetCoreStructuredLoggerProvider ) . FullName ) ;
175+ two . CategoryName . Should ( ) . Be ( typeof ( ISentryClient ) . FullName ) ;
176+ two . LogLevel . Should ( ) . Be ( LogLevel . None ) ;
177+ two . Filter . Should ( ) . BeNull ( ) ;
178+
179+ three . ProviderName . Should ( ) . Be ( typeof ( SentryAspNetCoreStructuredLoggerProvider ) . FullName ) ;
180+ three . CategoryName . Should ( ) . Be ( typeof ( SentryMiddleware ) . FullName ) ;
181+ three . LogLevel . Should ( ) . Be ( LogLevel . None ) ;
182+ three . Filter . Should ( ) . BeNull ( ) ;
183+ }
124184}
0 commit comments