xop Request 2009-11-10T23:00:00.032832823Z
- Everything starts with
"xop"
. - A space
- An indicator of what kind of record it is. For lines, this is the logging level, for other things, it is what they are.
- Request
- Span
- Def
- Trace/Debug/Info/Warn/Error/Alert
- A space
- For all but Def:
- a timestamp in RFC3339Nano format.
- A space
- Details, which vary based on what kind of thing it is
- Request
- "Start" or "v"
- Start
- Next up is a console format version number, "1" for now.
- A space
- trace-header
- A space
- A quoted-if-needed "name" for the request
- A space
- A quoted-if-needed Source+version
- A space
- A quoted-if-needed Namespace+version
- Optional:
- A space
- "parent:"
- parent trace header OR parent span id
- Optional:
- A space
- "state:"
- state header, quoted if needed
- Optional:
- A space
- "baggage:"
- baggage header, quoted if needed
- "v"
- a record version number that increments each time the request is printed
- A space
- spanID
- Repeating:
- A space
- A quoted-if-needed key
- "="
- A quoted-if-needed value
- Start
- "Start" or "v"
- Span
- "Start" or "v" + a version number
- "Start"
- A space
- The SpanID (hex)
- A space
- The parent SpanID (hex)
- A space
- A quoted-if-needed "name" for the span
- A space
- The span sequence abbreviation or "" if none
- "v"
- same as request version updates
- "Start"
- A space
- "Start" or "v" + a version number
- Def
- A space
- JSON-encoded attribute definition
- Trace/Debug/Info/Warn/Error/Alert
- A space
- The SpanID (hex)
- A space
- Optional kind indicator
- Model:
- " MODEL:"
- Link:
- " LINK:"
- Message:
- Optional format indicator:
- Template:
- "TEMPLATE:"
- No template:
- Template:
- Optional format indicator:
- Model:
- quoted-if-needed line message (or template)
- Repeating:
- A space
- a line attribute (see below)
- Optional stack:
- A space
- " STACK:"
- Repeating frames
- A space
- Line
- ":"
- Number
- Request
The general form for attributes is
key=value(type)
Key can either be an unquoted word or it can be a "quoted" string.
Not all values are followed with a type.
Values(type) can be one of the following:
-
3m10s(dur) A duration
-
3.72e20(f32) A float32
-
"somthing with a space" A string
-
"somthing with a space"(stringer) A string, orignally a stringer
-
Hi38 A string without any spaces (and not a duration). It must not start with a number, parenthesis, or slash.
-
82392 An integer, type
int
. Negative too. -
-328204(i32) An integer, any type other than
int
-
f A bool, false
-
t A bool, true
-
2009-11-10T23:00:04.843394034Z(time) A time, RFC3339Nano format
-
1/JSON An enum, numeric and string values provided
-
(11){"a":"foo"}JSON/foobarType An "any", a model, encoding specified, length first in parens
key=value, no type indicators
Multi-valued values are done with
key=value,value,value,value