Example #1
0
 public void Enrich(LogHelperLoggingEvent loggingEvent)
 {
     if (_logPropertyPredict?.Invoke(loggingEvent) != false)
     {
         loggingEvent.AddProperty(_propertyName, _propertyValueFactory, _overwrite);
     }
 }
        public static void AddProperty(this LogHelperLoggingEvent loggingEvent, string propertyName,
                                       object propertyValue, bool overwrite = false)
        {
            Guard.NotNull(loggingEvent, nameof(loggingEvent));

            loggingEvent.Properties ??= new Dictionary <string, object?>();
            if (loggingEvent.Properties.ContainsKey(propertyName) && !overwrite)
            {
                return;
            }

            loggingEvent.Properties[propertyName] = propertyValue;
        }
Example #3
0
        private static bool LogInternal(ILogger logger, LogHelperLoggingEvent loggingEvent)
        {
            var logLevel = ConvertLogLevel(loggingEvent.LogLevel);

            if (!logger.IsEnabled(logLevel))
            {
                return(false);
            }
            var logged = false;

            switch (loggingEvent.LogLevel)
            {
            case LogHelperLogLevel.Debug:
                logger.LogDebug(loggingEvent.Exception, loggingEvent.Message);
                logged = true;
                break;

            case LogHelperLogLevel.Trace:
                logger.LogTrace(loggingEvent.Exception, loggingEvent.Message);
                logged = true;
                break;

            case LogHelperLogLevel.Info:
                logger.LogInformation(loggingEvent.Exception, loggingEvent.Message);
                logged = true;
                break;

            case LogHelperLogLevel.Warn:
                logger.LogWarning(loggingEvent.Exception, loggingEvent.Message);
                logged = true;
                break;

            case LogHelperLogLevel.Error:
                logger.LogError(loggingEvent.Exception, loggingEvent.Message);
                logged = true;
                break;

            case LogHelperLogLevel.Fatal:
                logger.LogCritical(loggingEvent.Exception, loggingEvent.Message);
                logged = true;
                break;
            }

            return(logged);
        }
        public static void AddProperty(this LogHelperLoggingEvent loggingEvent, string propertyName,
                                       object propertyValue, bool overwrite = false)
        {
            if (null == loggingEvent)
            {
                throw new ArgumentNullException(nameof(loggingEvent));
            }

            if (loggingEvent.Properties == null)
            {
                loggingEvent.Properties = new Dictionary <string, object>();
            }
            if (loggingEvent.Properties.ContainsKey(propertyName) && overwrite == false)
            {
                return;
            }

            loggingEvent.Properties[propertyName] = propertyValue;
        }
        public void Log(LogHelperLogLevel logLevel, Exception?exception, string?messageTemplate, params object?[] parameters)
        {
            if (!IsEnabled(logLevel))
            {
                return;
            }

            var loggingEvent = new LogHelperLoggingEvent()
            {
                CategoryName    = CategoryName,
                DateTime        = DateTimeOffset.UtcNow,
                Exception       = exception,
                LogLevel        = logLevel,
                MessageTemplate = messageTemplate ?? string.Empty,
            };

            if (_logHelperFactory._logFilters.Count > 0 &&
                !_logHelperFactory._logFilters.Any(x => x.Invoke(typeof(int), loggingEvent))
                )
            {
                return;
            }

            var formattedLog = LoggingFormatter.Format(loggingEvent.MessageTemplate, parameters);

            loggingEvent.Message    = formattedLog.Msg;
            loggingEvent.Properties = formattedLog.Values;

            foreach (var enricher in _logHelperFactory._logHelperEnrichers)
            {
                enricher.Enrich(loggingEvent);
            }

            Parallel.ForEach(_logHelperFactory._logHelperProviders, logHelperProvider =>
            {
                if (_logHelperFactory._logFilters.Count == 0 ||
                    _logHelperFactory._logFilters.All(x => x.Invoke(logHelperProvider.Key, loggingEvent)))
                {
                    logHelperProvider.Value.Log(loggingEvent);
                }
            });
        }
Example #6
0
        public void Log(LogHelperLoggingEvent loggingEvent)
        {
            var logger = _loggerFactory.CreateLogger(loggingEvent.CategoryName);

            _ = LogInternal(logger, loggingEvent);
        }