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)); } _stringWriter ??= new StringWriter(); var logEntry = new LogEntry <TState>(logLevel, _name, eventId, state, exception, formatter); Formatter.Write(in logEntry, ScopeProvider, _stringWriter); var sb = _stringWriter.GetStringBuilder(); if (sb.Length == 0) { return; } var computedAnsiString = sb.ToString(); sb.Clear(); if (sb.Capacity > 1024) { sb.Capacity = 1024; } _queueProcessor.EnqueueMessage(new LogMessageEntry(computedAnsiString, logLevel >= Options.LogToStandardErrorThreshold)); }
private void WriteToStream(Action <TextWriter> handle) { _stringWriter ??= new StringWriter(); handle.Invoke(_stringWriter); var sb = _stringWriter.GetStringBuilder(); if (sb.Length == 0) { return; } var computedAnsiString = sb.ToString(); sb.Clear(); if (sb.Capacity > 1024) { sb.Capacity = 1024; } _queueProcessor.EnqueueMessage(new LogMessageEntry(computedAnsiString)); }