mirror of
https://github.com/hanzoai/telemetry.git
synced 2026-10-30 20:01:49 +00:00
#### Description Adds displaying of resource and scope details in `normal` verbosity. Each resource is represented with one line showing the resource's details: - schema URL - resource attributes which looks like `ResourceTraces #0 [resource-schema-url] resource_attr1=value1 attr2=value2`. Each instrumentation scope is represented by one line showing the scope's details: - scope name - scope version - scope schema URL - scope attributes which looks like `ScopeTraces #0 scope-name@scope-version [scope-schema-url] scope_attr1=value1 attr2=value2`. Before: ```console 2025-05-09T19:57:16.332+0200 info Traces {"resource": {}, "otelcol.component.id": "debug/normal", "otelcol.component.kind": "exporter", "otelcol.signal": "traces", "resource spans": 1, "spans": 2} 2025-05-09T19:57:16.332+0200 info okey-dokey-0 ab1030bd4ee554af936542b01d7b4807 1d8c93663d043aa8 net.sock.peer.addr=1.2.3.4 peer.service=telemetrygen-client lets-go ab1030bd4ee554af936542b01d7b4807 0d238e8a2f97733f net.sock.peer.addr=1.2.3.4 peer.service=telemetrygen-server {"resource": {}, "otelcol.component.id": "debug/normal", "otelcol.component.kind": "exporter", "otelcol.signal": "traces"} ``` After: ```console 2025-05-09T19:57:16.332+0200 info Traces {"resource": {}, "otelcol.component.id": "debug/normal", "otelcol.component.kind": "exporter", "otelcol.signal": "traces", "resource spans": 1, "spans": 2} 2025-05-09T19:57:16.332+0200 info ResourceTraces #0 [https://opentelemetry.io/schemas/1.25.0] service.name=telemetrygen ScopeTraces #0 telemetrygen okey-dokey-0 ab1030bd4ee554af936542b01d7b4807 1d8c93663d043aa8 net.sock.peer.addr=1.2.3.4 peer.service=telemetrygen-client lets-go ab1030bd4ee554af936542b01d7b4807 0d238e8a2f97733f net.sock.peer.addr=1.2.3.4 peer.service=telemetrygen-server {"resource": {}, "otelcol.component.id": "debug/normal", "otelcol.component.kind": "exporter", "otelcol.signal": "traces"} ``` #### Link to tracking issue Fixes https://github.com/open-telemetry/opentelemetry-collector/issues/10515 #### Testing Updated unit tests. #### Documentation Updated example in documentation.
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package normal // import "go.opentelemetry.io/collector/exporter/debugexporter/internal/normal"
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"go.opentelemetry.io/collector/pdata/ptrace"
|
|
)
|
|
|
|
type normalTracesMarshaler struct{}
|
|
|
|
// Ensure normalTracesMarshaller implements interface ptrace.Marshaler
|
|
var _ ptrace.Marshaler = normalTracesMarshaler{}
|
|
|
|
// NewNormalTracesMarshaler returns a ptrace.Marshaler for normal verbosity. It writes one line of text per log record
|
|
func NewNormalTracesMarshaler() ptrace.Marshaler {
|
|
return normalTracesMarshaler{}
|
|
}
|
|
|
|
func (normalTracesMarshaler) MarshalTraces(md ptrace.Traces) ([]byte, error) {
|
|
var buffer bytes.Buffer
|
|
for i := 0; i < md.ResourceSpans().Len(); i++ {
|
|
resourceTraces := md.ResourceSpans().At(i)
|
|
|
|
buffer.WriteString(fmt.Sprintf("ResourceTraces #%d%s%s\n", i, writeResourceDetails(resourceTraces.SchemaUrl()), writeAttributesString(resourceTraces.Resource().Attributes())))
|
|
|
|
for j := 0; j < resourceTraces.ScopeSpans().Len(); j++ {
|
|
scopeTraces := resourceTraces.ScopeSpans().At(j)
|
|
|
|
buffer.WriteString(fmt.Sprintf("ScopeTraces #%d%s%s\n", i, writeScopeDetails(scopeTraces.Scope().Name(), scopeTraces.Scope().Version(), scopeTraces.SchemaUrl()), writeAttributesString(scopeTraces.Scope().Attributes())))
|
|
|
|
for k := 0; k < scopeTraces.Spans().Len(); k++ {
|
|
span := scopeTraces.Spans().At(k)
|
|
|
|
buffer.WriteString(span.Name())
|
|
|
|
buffer.WriteString(" ")
|
|
buffer.WriteString(span.TraceID().String())
|
|
|
|
buffer.WriteString(" ")
|
|
buffer.WriteString(span.SpanID().String())
|
|
|
|
if span.Attributes().Len() > 0 {
|
|
spanAttributes := writeAttributes(span.Attributes())
|
|
buffer.WriteString(" ")
|
|
buffer.WriteString(strings.Join(spanAttributes, " "))
|
|
}
|
|
|
|
buffer.WriteString("\n")
|
|
}
|
|
}
|
|
}
|
|
return buffer.Bytes(), nil
|
|
}
|