/// <summary> /// Converts <see cref="Microsoft.Extensions.Logging.LogLevel" /> to <see cref="NLog.LogLevel" />. /// </summary> /// <param name="logLevel">Log level value to convert.</param> /// <returns>NLog value of the log level.</returns> public static LogLevel ToNLogLevel(this Microsoft.Extensions.Logging.LogLevel logLevel) { LogLevel res = LogLevel.Trace; switch (logLevel) { case Microsoft.Extensions.Logging.LogLevel.Trace: res = LogLevel.Trace; break; case Microsoft.Extensions.Logging.LogLevel.Debug: res = LogLevel.Debug; break; case Microsoft.Extensions.Logging.LogLevel.Information: res = LogLevel.Info; break; case Microsoft.Extensions.Logging.LogLevel.Warning: res = LogLevel.Warn; break; case Microsoft.Extensions.Logging.LogLevel.Error: res = LogLevel.Error; break; case Microsoft.Extensions.Logging.LogLevel.Critical: res = LogLevel.Fatal; break; } return(res); }
/// <summary> /// Convert loglevel to NLog variant. /// </summary> /// <param name="logLevel">level to be converted.</param> /// <returns></returns> private static LogLevel ConvertLogLevel(Microsoft.Extensions.Logging.LogLevel logLevel) { switch (logLevel) { case Microsoft.Extensions.Logging.LogLevel.Trace: return(LogLevel.Trace); case Microsoft.Extensions.Logging.LogLevel.Debug: return(LogLevel.Debug); case Microsoft.Extensions.Logging.LogLevel.Information: return(LogLevel.Info); case Microsoft.Extensions.Logging.LogLevel.Warning: return(LogLevel.Warn); case Microsoft.Extensions.Logging.LogLevel.Error: return(LogLevel.Error); case Microsoft.Extensions.Logging.LogLevel.Critical: return(LogLevel.Fatal); case Microsoft.Extensions.Logging.LogLevel.None: return(LogLevel.Off); default: return(LogLevel.Debug); } }
public void Log <TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { var nLogLogLevel = ConvertLogLevel(logLevel); if (!_logger.IsEnabled(nLogLogLevel)) { return; } if (formatter == null) { throw new ArgumentNullException(nameof(formatter)); } var eventInfo = CreateLogEventInfo(nLogLogLevel, state, exception, formatter); CaptureEventId(eventInfo, eventId); if (exception != null) { eventInfo.Exception = exception; } _logger.Log(typeof(Microsoft.Extensions.Logging.ILogger), eventInfo); }
//todo callsite showing the framework logging classes/methods public void Log <TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { var nLogLogLevel = ConvertLogLevel(logLevel); if (IsEnabled(nLogLogLevel)) { if (formatter == null) { throw new ArgumentNullException(nameof(formatter)); } var message = formatter(state, exception); if (!string.IsNullOrEmpty(message)) { //message arguments are not needed as it is already checked that the loglevel is enabled. var eventInfo = LogEventInfo.Create(nLogLogLevel, _logger.Name, message); eventInfo.Exception = exception; eventInfo.Properties["EventId" + _options.EventIdSeparator + "Id"] = eventId.Id; eventInfo.Properties["EventId" + _options.EventIdSeparator + "Name"] = eventId.Name; eventInfo.Properties["EventId"] = eventId; _logger.Log(eventInfo); } } }
/// <summary> /// Is logging enabled for this logger at this <paramref name="logLevel"/>? /// </summary> /// <param name="logLevel"></param> /// <returns></returns> public bool IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel) { var convertLogLevel = ConvertLogLevel(logLevel); return(IsEnabled(convertLogLevel)); }