public LokiStream CreateStream()
    {
        var stream = new LokiStream();

        Streams.Add(stream);
        return(stream);
    }
        private static void GenerateEntry(LogEvent logEvent, LokiStream stream)
        {
            var sb = new StringBuilder();

            sb.AppendLine(logEvent.RenderMessage());

            if (logEvent.Exception != null)
            {
                var ex = logEvent.Exception;
                while (ex != null)
                {
                    sb.AppendLine(ex.Message);
                    sb.AppendLine(ex.StackTrace);
                    ex = ex.InnerException;
                }
            }

            stream.AddEntry(logEvent.Timestamp, sb.ToString().TrimEnd('\r', '\n'));
        }
        private void GenerateLabels(LogEvent logEvent, LokiStream stream)
        {
            stream.AddLabel("level", logEvent.Level.ToGrafanaLogLevel());

            foreach (var label in _globalLabels)
            {
                if (!IsExcluded(label.Key))
                {
                    stream.AddLabel(label.Key, label.Value);
                }
            }

            foreach (var property in logEvent.Properties)
            {
                if (!IsExcluded(property.Key))
                {
                    // Some enrichers generates extra quotes and it breaks the payload
                    stream.AddLabel(property.Key, property.Value.ToString().Replace("\"", string.Empty));
                }
            }
        }
Beispiel #4
0
    private void GenerateEntry(
        LokiLogEvent lokiLogEvent,
        ITextFormatter formatter,
        LokiStream stream)
    {
        var buffer = new StringWriter(new StringBuilder(DefaultWriteBufferCapacity));

        var logEvent  = lokiLogEvent.LogEvent;
        var timestamp = logEvent.Timestamp;

        if (_useInternalTimestamp)
        {
            logEvent.AddPropertyIfAbsent(
                new LogEventProperty("Timestamp", new ScalarValue(timestamp)));
            timestamp = lokiLogEvent.InternalTimestamp;
        }

        formatter.Format(logEvent, buffer);

        stream.AddEntry(timestamp, buffer.ToString().TrimEnd('\r', '\n'));
    }
Beispiel #5
0
        private static void GenerateEntry(LogEvent logEvent, ITextFormatter formatter, LokiStream stream, IEnumerable <string> labels)
        {
            var buffer = new StringWriter(new StringBuilder(DefaultWriteBufferCapacity));

            if (formatter is ILabelAwareTextFormatter labelAwareTextFormatter)
            {
                labelAwareTextFormatter.Format(logEvent, buffer, labels);
            }
            else
            {
                formatter.Format(logEvent, buffer);
            }

            stream.AddEntry(logEvent.Timestamp, buffer.ToString().TrimEnd('\r', '\n'));
        }