Esempio n. 1
0
 public virtual void Enrich(LogHelperLoggingEvent loggingEvent)
 {
     if (null != _contextAccessor?.HttpContext)
     {
         _enrichAction.Invoke(loggingEvent, _contextAccessor.HttpContext);
     }
 }
Esempio n. 2
0
    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;
    }
    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 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);
            }
        });
    }
Esempio n. 5
0
        public void Log(LogHelperLoggingEvent loggingEvent)
        {
            var logger = SSerilog.Log.ForContext(SourceContextPropName, loggingEvent.CategoryName);
            //Log(logger, loggingEvent.LogLevel, loggingEvent.Exception, loggingEvent.Message);
            var logLevel = GetSerilogEventLevel(loggingEvent.LogLevel);

            if (logger.IsEnabled(logLevel))
            {
                var messageTemplate = loggingEvent.MessageTemplate;
                var properties      = new List <LogEventProperty>();
                if (loggingEvent.Properties != null)
                {
                    foreach (var property in loggingEvent.Properties)
                    {
                        if (logger.BindProperty(property.Key, property.Value, false, out var bound))
                        {
                            properties.Add(bound);
                        }
                    }
                }
                var parsedTemplate = MessageTemplateParser.Parse(messageTemplate ?? "");
                logger.Write(new LogEvent(loggingEvent.DateTime, logLevel, loggingEvent.Exception, parsedTemplate, properties));
            }
        }
    public void Log(LogHelperLoggingEvent loggingEvent)
    {
        var logger = _loggerFactory.CreateLogger(loggingEvent.CategoryName);

        _ = LogInternal(logger, loggingEvent);
    }