Example #1
0
        /// <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);
        }
Example #4
0
        //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));
        }