Skip to content

Commit c17101e

Browse files
authored
NLogLogger - Faster checking if LogLevel IsEnabled (#509)
1 parent 1a17362 commit c17101e

2 files changed

Lines changed: 23 additions & 12 deletions

File tree

src/NLog.Extensions.Logging/Logging/NLogLogger.cs

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ public NLogLogger(Logger logger, NLogProviderOptions options, NLogBeginScopePars
2929

3030
public void Log<TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
3131
{
32-
var nLogLogLevel = ConvertLogLevel(logLevel);
33-
if (!_logger.IsEnabled(nLogLogLevel))
32+
if (!IsLogLevelEnabled(logLevel))
3433
{
3534
return;
3635
}
@@ -40,7 +39,7 @@ public void Log<TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId
4039
throw new ArgumentNullException(nameof(formatter));
4140
}
4241

43-
LogEventInfo eventInfo = CreateLogEventInfo(nLogLogLevel, state, exception, formatter);
42+
LogEventInfo eventInfo = CreateLogEventInfo(ConvertLogLevel(logLevel), state, exception, formatter);
4443

4544
CaptureEventId(eventInfo, eventId);
4645

@@ -390,16 +389,28 @@ private void CaptureMessagePropertiesList(LogEventInfo eventInfo, IReadOnlyList<
390389
/// <returns></returns>
391390
public bool IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel)
392391
{
393-
var convertLogLevel = ConvertLogLevel(logLevel);
394-
return IsEnabled(convertLogLevel);
392+
return IsLogLevelEnabled(logLevel);
395393
}
396394

397-
/// <summary>
398-
/// Is logging enabled for this logger at this <paramref name="logLevel"/>?
399-
/// </summary>
400-
private bool IsEnabled(LogLevel logLevel)
395+
private bool IsLogLevelEnabled(Microsoft.Extensions.Logging.LogLevel logLevel)
401396
{
402-
return _logger.IsEnabled(logLevel);
397+
switch (logLevel)
398+
{
399+
case Microsoft.Extensions.Logging.LogLevel.Trace:
400+
return _logger.IsTraceEnabled;
401+
case Microsoft.Extensions.Logging.LogLevel.Debug:
402+
return _logger.IsDebugEnabled;
403+
case Microsoft.Extensions.Logging.LogLevel.Information:
404+
return _logger.IsInfoEnabled;
405+
case Microsoft.Extensions.Logging.LogLevel.Warning:
406+
return _logger.IsWarnEnabled;
407+
case Microsoft.Extensions.Logging.LogLevel.Error:
408+
return _logger.IsErrorEnabled;
409+
case Microsoft.Extensions.Logging.LogLevel.Critical:
410+
return _logger.IsFatalEnabled;
411+
default:
412+
return false;
413+
}
403414
}
404415

405416
/// <inheritdoc />

src/NLog.Extensions.Logging/Logging/NLogProviderOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,13 @@ public class NLogProviderOptions
5757
public bool IncludeActivtyIdsWithBeginScope { get; set; }
5858

5959
/// <summary>
60-
/// Resets the default Microsoft LoggerFactory Filter for the <see cref="NLogLoggerProvider"/>
60+
/// Resets the default Microsoft LoggerFactory Filter for the <see cref="NLogLoggerProvider"/>, and instead only uses NLog LoggingRules.
6161
/// </summary>
6262
/// <remarks>This option affects the building of service configuration, so assigning it from appsettings.json has no effect (loaded after).</remarks>
6363
public bool RemoveLoggerFactoryFilter { get; set; }
6464

6565
/// <summary>
66-
/// Replace Microsoft LoggerFactory with a pure <see cref="NLogLoggerFactory" />
66+
/// Replace Microsoft LoggerFactory with a pure <see cref="NLogLoggerFactory" />, and disables Microsoft Filter Logic and multiple LoggingProvider support.
6767
/// </summary>
6868
/// <remarks>This option affects the building of service configuration, so assigning it from appsettings.json has no effect (loaded after).</remarks>
6969
public bool ReplaceLoggerFactory { get; set; }

0 commit comments

Comments
 (0)