1/6

A log line is key=value, not a sentence.

error!("failed to load user {} for org {}", uid, org);

That is one opaque string. You cannot aggregate it, index it, or alert on it without a regex that breaks the next time someone edits the wording. This is a record:

level=error event=user_load_failed user_id=91 org_id=4 err=timeout

Every field is a queryable dimension, the message text is stable, and the same line serialises to JSON for an ingest pipeline unchanged. That is what tracing gives you over log: a Subscriber formats structured fields rather than a pre-rendered string, and #[instrument] attaches a span's fields to every event inside it automatically.