void ILogger.Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { var entry = new LogEntry() { Date = DateTime.Now, LogLevel = logLevel, EventId = eventId, State = state, Exception = exception, Scope = LogScopesProvider.GetState(), Message = formatter(state, exception) }; //iterate each logger in order and log if conditions are met foreach (var logger in Options.LogTargets) { if (logger.Condition == null || logger.Condition(entry)) { logger.Log(entry); entry.HasBeenLogged = true; } } }
public void Dispose() { //remove the last scope LogScopesProvider.RemoveScope(); }
IDisposable ILogger.BeginScope <TState>(TState state) { return (LogScopesProvider .CreateScope(state)); }