33// The .NET Foundation licenses this file to you under the MIT license.
44// See the LICENSE file in the project root for full license information.
55
6- using System . Collections . Immutable ;
76using System . Diagnostics ;
87using System . Globalization ;
98
@@ -15,17 +14,6 @@ namespace Splat.NLog;
1514[ DebuggerDisplay ( "Name={_inner.Name} Level={Level}" ) ]
1615public sealed class NLogLogger : IFullLogger , IDisposable
1716{
18- private static readonly KeyValuePair < LogLevel , global ::NLog . LogLevel > [ ] _mappings =
19- [
20- new ( LogLevel . Debug , global ::NLog . LogLevel . Debug ) ,
21- new ( LogLevel . Info , global ::NLog . LogLevel . Info ) ,
22- new ( LogLevel . Warn , global ::NLog . LogLevel . Warn ) ,
23- new ( LogLevel . Error , global ::NLog . LogLevel . Error ) ,
24- new ( LogLevel . Fatal , global ::NLog . LogLevel . Fatal ) ,
25- ] ;
26-
27- private static readonly ImmutableDictionary < LogLevel , global ::NLog . LogLevel > _mappingsDictionary = _mappings . ToImmutableDictionary ( ) ;
28-
2917 private readonly global ::NLog . Logger _inner ;
3018
3119 /// <summary>
@@ -47,34 +35,34 @@ public LogLevel Level
4735 }
4836
4937 /// <inheritdoc />
50- public bool IsDebugEnabled => _inner . IsEnabled ( global :: NLog . LogLevel . Debug ) ;
38+ public bool IsDebugEnabled => _inner . IsDebugEnabled ;
5139
5240 /// <inheritdoc />
53- public bool IsInfoEnabled => _inner . IsEnabled ( global :: NLog . LogLevel . Info ) ;
41+ public bool IsInfoEnabled => _inner . IsInfoEnabled ;
5442
5543 /// <inheritdoc />
56- public bool IsWarnEnabled => _inner . IsEnabled ( global :: NLog . LogLevel . Warn ) ;
44+ public bool IsWarnEnabled => _inner . IsWarnEnabled ;
5745
5846 /// <inheritdoc />
59- public bool IsErrorEnabled => _inner . IsEnabled ( global :: NLog . LogLevel . Error ) ;
47+ public bool IsErrorEnabled => _inner . IsErrorEnabled ;
6048
6149 /// <inheritdoc />
62- public bool IsFatalEnabled => _inner . IsEnabled ( global :: NLog . LogLevel . Fatal ) ;
50+ public bool IsFatalEnabled => _inner . IsFatalEnabled ;
6351
6452 /// <inheritdoc />
6553 public void Dispose ( ) => _inner . LoggerReconfigured -= OnInnerLoggerReconfigured ;
6654
6755 /// <inheritdoc />
68- public void Write ( string message , LogLevel logLevel ) => _inner . Log ( _mappingsDictionary [ logLevel ] , message ) ;
56+ public void Write ( string message , LogLevel logLevel ) => _inner . Log ( ResolveLogLevel ( logLevel ) , message ) ;
6957
7058 /// <inheritdoc />
71- public void Write ( Exception exception , string message , LogLevel logLevel ) => _inner . Log ( _mappingsDictionary [ logLevel ] , exception , message ) ;
59+ public void Write ( Exception exception , string message , LogLevel logLevel ) => _inner . Log ( ResolveLogLevel ( logLevel ) , exception , message ) ;
7260
7361 /// <inheritdoc />
74- public void Write ( string message , Type type , LogLevel logLevel ) => LogResolver . Resolve ( type ) . Log ( _mappingsDictionary [ logLevel ] , message ) ;
62+ public void Write ( string message , Type type , LogLevel logLevel ) => LogResolver . Resolve ( type ) . Log ( ResolveLogLevel ( logLevel ) , message ) ;
7563
7664 /// <inheritdoc />
77- public void Write ( Exception exception , string message , Type type , LogLevel logLevel ) => LogResolver . Resolve ( type ) . Log ( _mappingsDictionary [ logLevel ] , exception , message ) ;
65+ public void Write ( Exception exception , string message , Type type , LogLevel logLevel ) => LogResolver . Resolve ( type ) . Log ( ResolveLogLevel ( logLevel ) , exception , message ) ;
7866
7967 /// <inheritdoc/>
8068 public void Debug < TArgument > ( string message , TArgument args ) => _inner . Debug ( CultureInfo . InvariantCulture , message , args ) ;
@@ -556,6 +544,16 @@ public LogLevel Level
556544 /// <inheritdoc/>
557545 public void Fatal < TArgument1 , TArgument2 , TArgument3 , TArgument4 , TArgument5 , TArgument6 , TArgument7 , TArgument8 , TArgument9 , TArgument10 > ( Exception exception , string messageFormat , TArgument1 argument1 , TArgument2 argument2 , TArgument3 argument3 , TArgument4 argument4 , TArgument5 argument5 , TArgument6 argument6 , TArgument7 argument7 , TArgument8 argument8 , TArgument9 argument9 , TArgument10 argument10 ) => _inner . Fatal ( exception , messageFormat , argument1 , argument2 , argument3 , argument4 , argument5 , argument6 , argument7 , argument8 , argument9 , argument10 ) ;
558546
547+ private static global ::NLog . LogLevel ResolveLogLevel ( LogLevel logLevel ) => logLevel switch
548+ {
549+ LogLevel . Debug => global ::NLog . LogLevel . Debug ,
550+ LogLevel . Info => global ::NLog . LogLevel . Info ,
551+ LogLevel . Warn => global ::NLog . LogLevel . Warn ,
552+ LogLevel . Error => global ::NLog . LogLevel . Error ,
553+ LogLevel . Fatal => global ::NLog . LogLevel . Fatal ,
554+ _ => throw new ArgumentException ( $ "Unknown LogLevel { logLevel } ", nameof ( logLevel ) ) ,
555+ } ;
556+
559557 private void OnInnerLoggerReconfigured ( object ? sender , EventArgs e ) => SetLogLevel ( ) ;
560558
561559 /// <summary>
@@ -566,11 +564,11 @@ public LogLevel Level
566564 /// </remarks>
567565 private void SetLogLevel ( )
568566 {
569- foreach ( var mapping in _mappings )
567+ foreach ( LogLevel logLevel in Enum . GetValues ( typeof ( LogLevel ) ) )
570568 {
571- if ( _inner . IsEnabled ( mapping . Value ) )
569+ if ( _inner . IsEnabled ( ResolveLogLevel ( logLevel ) ) )
572570 {
573- Level = mapping . Key ;
571+ Level = logLevel ;
574572 return ;
575573 }
576574 }
0 commit comments