Trace Context in non-OTLP Log Formats

Status: Experimental


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:<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:

  "body":"Incoming request",

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.