Exemple #1
0
        /// <inheritdoc/>
        public ISpan Log(DateTimeOffset timestamp, IEnumerable <KeyValuePair <string, object> > fields)
        {
            Guard.ThrowIfNull(fields);

            var payload   = ConvertToEventPayload(fields);
            var eventName = payload.Item1;

            var spanAttributes = new SpanAttributes();

            foreach (var field in payload.Item2)
            {
                switch (field.Value)
                {
                case long value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case long[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case bool value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case bool[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case double value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case double[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case string value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case string[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                default:
                    break;
                }
            }

            if (timestamp == DateTimeOffset.MinValue)
            {
                this.Span.AddEvent(eventName, spanAttributes);
            }
            else
            {
                this.Span.AddEvent(eventName, timestamp, spanAttributes);
            }

            return(this);
        }
        /// <inheritdoc/>
        public global::OpenTracing.ISpan Log(DateTimeOffset timestamp, IEnumerable <KeyValuePair <string, object> > fields)
        {
            if (fields is null)
            {
                throw new ArgumentNullException(nameof(fields));
            }

            var payload   = ConvertToEventPayload(fields);
            var eventName = payload.Item1;

            var spanAttributes = new SpanAttributes();

            foreach (var field in payload.Item2)
            {
                switch (field.Value)
                {
                case long value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case long[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case bool value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case bool[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case double value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case double[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case string value:
                    spanAttributes.Add(field.Key, value);
                    break;

                case string[] value:
                    spanAttributes.Add(field.Key, value);
                    break;

                default:
                    break;
                }
            }

            if (timestamp == DateTimeOffset.MinValue)
            {
                this.Span.AddEvent(eventName, spanAttributes);
            }
            else
            {
                this.Span.AddEvent(eventName, timestamp, spanAttributes);
            }

            return(this);
        }
Exemple #3
0
        public void ValidateNullKey()
        {
            var spanAttribute = new SpanAttributes();

            Assert.Throws <ArgumentNullException>(() => spanAttribute.Add(null, "null key"));
        }