Trace Context in non-OTLP Log Formats

Status: Experimental

Overview

OTLP Logs Records have top level fields representing trace context. This document defines how trace context should be recorded in non-OTLP Log Formats. To summarize, the following field names should be used in legacy formats:

  • “trace_id” for TraceId, hex-encoded.
  • “span_id” for SpanId, hex-encoded.
  • “trace_flags” for trace flags, formatted according to W3C traceflags format.

All 3 fields are optional (see the data model for details of which combination of fields is considered valid).

Syslog RFC5424

Trace id, span id and traceflags SHOULD be recorded via SD-ID “opentelemetry”.

For example:

[opentelemetry trace_id="102981ABCD2901" span_id="abcdef1010" trace_flags="01"]

Plain Text Formats

The fields SHOULD be recorded according to the customary approach used for a particular format (e.g. field:value format for LTSV). For example:

host:192.168.0.1<TAB>trace_id:102981ABCD2901<TAB>span_id:abcdef1010<TAB>time:[01/Jan/2010:10:11:23 -0400]<TAB>req:GET /health HTTP/1.0<TAB>status:200

JSON Formats

The fields SHOULD be recorded as top-level fields in the JSON structure. For example:

{
  "timestamp":1581385157.14429,
  "body":"Incoming request",
  "trace_id":"102981ABCD2901",
  "span_id":"abcdef1010"
}

Other Structured Formats

The fields SHOULD be recorded as top-level structured attributes of the log record as it is customary for the particular format.