Logging and Observability
Log Context
Include an Identifier
Context fields connect a log line to a request, job, or user action. Keeping the field name stable makes later filtering simple.
Program
Play the script to choose the request id and see it included in the log line.
log_context_line.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash
request_id="req-7"
service="api"
status="ok"
line="service=$service request=$request_id status=$status"
echo "$line"
#!/usr/bin/env bash
request_id="req-8"
service="api"
status="ok"
line="service=$service request=$request_id status=$status"
echo "$line"
request_id ← req-7
3request_id="req-7"4service="api"values this stepreq-7request_idservice ← api
3request_id="req-7"4service="api"5status="ok"values this stepapiservicestatus ← ok
4service="api"5status="ok"6line="service=$service request=$request_id status=$status"values this stepokstatusline ← service=api request=req-7 status=ok
5status="ok"6line="service=$service request=$request_id status=$status"7echo "$line"values this stepservice=api request=req-7 status=oklineapiservicereq-7request_idokstatusecho "$line"
6line="service=$service request=$request_id status=$status"7echo "$line"outputservice=api request=req-7 status=okvalues this stepservice=api request=req-7 status=okline
request_id ← req-8
3request_id="req-8"4service="api"values this stepreq-8request_idservice ← api
3request_id="req-8"4service="api"5status="ok"values this stepapiservicestatus ← ok
4service="api"5status="ok"6line="service=$service request=$request_id status=$status"values this stepokstatusline ← service=api request=req-8 status=ok
5status="ok"6line="service=$service request=$request_id status=$status"7echo "$line"values this stepservice=api request=req-8 status=oklineapiservicereq-8request_idokstatusecho "$line"
6line="service=$service request=$request_id status=$status"7echo "$line"outputservice=api request=req-8 status=okvalues this stepservice=api request=req-8 status=okline
context field
A context field links the line to a specific operation.
request id
A request id lets multiple lines from one request be found together.
field name
Stable field names make logs useful to both humans and tools.