Exemple #1
0
        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();
            }
        }