public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { if (ThreadExtensions.IsImpersonating()) { _context.Push(() => { _logger.Log(logLevel, eventId, state, exception, formatter); }); } else { _context.Flush(); _logger.Log(logLevel, eventId, state, exception, formatter); } }
public DeferringLoggerProvider(ILoggerProvider loggerProvider) { _loggerProvider = loggerProvider; var token = _flusherControl.Token; _flusher = Task.Run(async() => { while (!token.IsCancellationRequested) { _context.Flush(); await Task.Delay(TimeSpan.FromSeconds(5), token); } }); }