コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }