Beispiel #1
0
        private string Render(Dictionary <string, string> context)
        {
            var builder = new StringBuilder();

            foreach (var token in _tokens)
            {
                builder.Append(GraphiteSyntax.EscapeName(token(context), true));
            }

            return(DotsRegex.Replace(builder.ToString().Trim('.'), "."));
        }
Beispiel #2
0
        public IEnumerable <string> Format(GraphitePoint point)
        {
            var tags           = point.Tags;
            var tagsDictionary = tags.Keys.Zip(tags.Values, (key, value) => new { key, value })
                                 .ToDictionary(x => $"tag:{x.key}", x => GraphiteSyntax.EscapeName(x.value), StringComparer.OrdinalIgnoreCase);

            tagsDictionary["context"] = point.Context;
            tagsDictionary["name"]    = point.Name;

            foreach (var field in point.Fields)
            {
                tagsDictionary["field"] = field.Key;
                var sb = new StringBuilder(Render(tagsDictionary));

                sb.Append(' ');
                sb.Append(GraphiteSyntax.FormatValue(field.Value));

                sb.Append(' ');
                sb.Append(GraphiteSyntax.FormatTimestamp(point.UtcTimestamp));

                yield return(sb.ToString());
            }
        }