Esempio n. 1
0
        ISpan LogImpl(DateTimeOffset?timestamp, IEnumerable <KeyValuePair <string, object> > fields)
        {
            ThrowDisposed();
            if (fields == null)
            {
                return(this);
            }
            var map = fields.ToDictionary(c => c.Key, c => c.Value);

            if (map.TryGetValue("event", out var @event) && @event != null && map.Count == 1)
            {
                if (timestamp.HasValue)
                {
                    zipkinSpan.Annotate(timestamp.Value, @event.ToString());
                }
                else
                {
                    zipkinSpan.Annotate(@event.ToString());
                }
                return(this);
            }

            var aggregage = map.Aggregate((string)null,
                                          (current, value) => current == null
                    ? $"{value.Key}={value.Value}"
                    : current + $" {value.Key}={value.Value}"
                                          );

            if (timestamp.HasValue)
            {
                zipkinSpan.Annotate(timestamp.Value, aggregage);
            }
            else
            {
                zipkinSpan.Annotate(aggregage);
            }
            return(this);
        }