Connecting Go Logs and Traces
Security Monitoring is now available Security Monitoring is now available

Connecting Go Logs and Traces

Manually Inject Trace and Span IDs

The Go tracer API allows printing span information along with log statements using the %v format specifier:

package main

import (
    "net/http"

    "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)

func handler(w http.ResponseWriter, r *http.Request) {
    // Create a span for a web request at the /posts URL.
    span := tracer.StartSpan("web.request", tracer.ResourceName("/posts"))
    defer span.Finish()

    // Append span info to log messages:
    log.Printf("my log message %v", span)
}

The above example illustrates how to use the span’s context in the standard library’s log package. Similar logic may be applied to 3rd party packages too.

Note: If you are not using a Datadog Log Integration to parse your logs, custom log parsing rules need to ensure that dd.trace_id, dd.span_id, ‘dd.service’, ‘dd.env’ and ‘dd.version’ are being parsed as strings. More information can be found in the FAQ on this topic.

Further Reading