示例#1
0
        /// <inheritdoc />
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception,
                                 Func <TState, Exception, string> formatter)
        {
            // First we take care about output to console.
            if (consoleLogger.IsEnabled(logLevel))
            {
                consoleLogger.Log(logLevel, eventId, state, exception, (s, e) => { return(prefix + formatter(s, e)); });
            }

            // The rest of the method cares about logging via NLog to files.
            NLog.LogLevel nLogLevel = logLevel.ToNLogLevel();
            if (!IsEnabled(nLogLevel))
            {
                return;
            }

            if (formatter == null)
            {
                throw new ArgumentNullException(nameof(formatter));
            }

            string message = prefix + formatter(state, exception);

            LogEventInfo eventInfo = LogEventInfo.Create(nLogLevel, logger.Name, message);

            eventInfo.Exception = exception;
            logger.Log(wrapperType, eventInfo);
        }
示例#2
0
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (formatter == null)
            {
                throw new ArgumentNullException(nameof(formatter));
            }

            NLog.LogLevel nLogLogLevel = logLevel.ToNLogLevel();
            bool          isLogging    = IsNlogEnabled(nLogLogLevel, _nloLogger);

            if (!isLogging && (exception == null || !_exceptionalWrapper.Enabled))
            {
                return;
            }

            bool isError = logLevel == LogLevel.Error || logLevel == LogLevel.Critical;

            Dictionary <string, string> customData = _logExtractor.GatherData(isError);

            Guid?guid = null;

            if (_exceptionalWrapper.Enabled && exception != null && (_filters == null || _filters.LogToOpserver(exception)))
            {
                guid = _httpContextWrapper.ExceptionalLog(exception, customData, _categoryName, _appName);
            }

            if (!isLogging)
            {
                return;
            }

            string message = formatter(state, exception);

            if (message == "[null]" && exception != null)
            {
                message = exception.Message;
            }

            // Log to NLog
            LogEventInfo eventInfo = CreateNlogEventInfo(eventId, exception, nLogLogLevel, message);

            // Get cutom data and inject
            AppendLuccaData(guid, eventInfo, _options, customData);

            _nloLogger.Log(eventInfo);
        }
示例#3
0
 public bool IsEnabled(LogLevel logLevel)
 {
     return(IsNlogEnabled(logLevel.ToNLogLevel(), _nloLogger));
 }
示例#4
0
 /// <inheritdoc />
 public bool IsEnabled(LogLevel logLevel)
 {
     return(IsEnabled(logLevel.ToNLogLevel()));
 }