@@ -13,53 +13,20 @@ public static class MemoryLoggerExtensions
1313 /// Adds a memory logger named 'MemoryLogger' to the factory.
1414 /// </summary>
1515 /// <param name="builder">The extension method argument.</param>
16+ /// <param name="configure">Optional configuration action for the <see cref="MemoryLoggerSettings"/>.</param>
1617 /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
17- public static ILoggingBuilder AddMemoryLogger ( this ILoggingBuilder builder )
18+ public static ILoggingBuilder AddMemoryLogger ( this ILoggingBuilder builder , Action < MemoryLoggerSettings > ? configure = null )
1819 {
1920 if ( builder is null )
2021 throw new ArgumentNullException ( nameof ( builder ) ) ;
2122
22- var descriptor = ServiceDescriptor . Singleton < ILoggerProvider , MemoryLoggerProvider > ( ) ;
23+ builder . Services . AddOptions < MemoryLoggerSettings > ( ) ;
2324
24- builder . Services . TryAddEnumerable ( descriptor ) ;
25+ builder . Services . TryAddSingleton < MemoryLoggerProvider > ( ) ;
26+ builder . Services . AddSingleton < ILoggerProvider > ( sp => sp . GetRequiredService < MemoryLoggerProvider > ( ) ) ;
2527
26- return builder ;
27- }
28-
29- /// <summary>
30- /// Adds a memory logger. Use <paramref name="settings"/> to enable logging for specific <see cref="LogLevel"/>.
31- /// </summary>
32- /// <param name="builder">The extension method argument.</param>
33- /// <param name="settings">The <see cref="MemoryLoggerSettings"/> to use.</param>
34- /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
35- public static ILoggingBuilder AddMemoryLogger ( this ILoggingBuilder builder , MemoryLoggerSettings settings )
36- {
37- if ( builder is null )
38- throw new ArgumentNullException ( nameof ( builder ) ) ;
39- if ( settings is null )
40- throw new ArgumentNullException ( nameof ( settings ) ) ;
41-
42- var logger = new MemoryLoggerProvider ( settings ) ;
43- var descriptor = ServiceDescriptor . Singleton < ILoggerProvider > ( logger ) ;
44-
45- builder . Services . TryAddEnumerable ( descriptor ) ;
46-
47- return builder ;
48- }
49-
50- /// <summary>
51- /// Adds a memory logger. Use <paramref name="configure"/> to enable logging for specific <see cref="LogLevel"/>.
52- /// </summary>
53- /// <param name="builder">The extension method argument.</param>
54- /// <param name="configure">A delegate to configure the <see cref="MemoryLoggerSettings"/>.</param>
55- /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
56- public static ILoggingBuilder AddMemoryLogger ( this ILoggingBuilder builder , Action < MemoryLoggerSettings > configure )
57- {
58- if ( configure is null )
59- throw new ArgumentNullException ( nameof ( configure ) ) ;
60-
61- builder . AddMemoryLogger ( ) ;
62- builder . Services . Configure ( configure ) ;
28+ if ( configure is not null )
29+ builder . Services . Configure ( configure ) ;
6330
6431 return builder ;
6532 }
0 commit comments