public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { if (!IsEnabled(logLevel)) { return; } LoggerFormatter fmt = _formater?.Invoke(); if (fmt == null) { fmt = LoggerFormatter.Get(this, Provider.GetSettings()?.Formatter, out _formater); } using (var c = StringBuilderCache.Acquire()) { var handler = TypeHandler <TState> .Default; fmt.Init(c, handler); handler.Log(fmt, logLevel, eventId, state, exception, formatter); if (IncludeScopes) { fmt.AppendScopes(_current); } fmt.Flush(); } }