public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            if (Name == typeof(LogglyHttpClient).FullName)
            {
                return;
            }

            if (!_options.Filter(Name, eventId, logLevel))
            {
                return;
            }

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

            var message = formatter(state, exception);

            if (message == null)
            {
                return;
            }

            var logglyEvent = new LogglyMessage
            {
                ApplicationName = _options.ApplicationName,
                MachineName     = Environment.MachineName,
                Category        = Name,
                Data            = state,
                Event           = eventId,
                Message         = message,
                Level           = logLevel,
                Error           = FormatException(exception)
            };

            _options.PreProcessMessage?.Invoke(logglyEvent);

            _processor.EnqueueMessage(logglyEvent);
        }
Exemple #2
0
 public void EnqueueMessage(LogglyMessage message)
 {
     _messageSubject.OnNext(message);
 }