Plain-text logs work until the first incident, when 'find every request that touched this record' becomes a regex nightmare. Structured JSON logs answer that question with a filter, not a prayer.
The format is simple: one JSON object per line, with a timestamp, level, request ID, and the event. Every log aggregator reads it; grep handles it fine on a single VPS.
The cost is near zero, a logging library and a convention. The payoff is the first time you trace a request through the system in minutes instead of hours.