public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { if (!IsEnabled(logLevel)) { return; } if (formatter == null) { throw new ArgumentNullException(nameof(formatter)); } var message = _formatter.Format(logLevel, eventId, state, exception, formatter); if (!string.IsNullOrEmpty(message)) { _loggingProcessor.EnqueueMessage(message); } }