Every production incident is a conversation between you-now and you-then. The quality of that conversation was decided weeks earlier, by whether past-you bothered to write the log line that explains what the system was trying to do.
Log intent, not just events
"User 4012 charged €49" is an event. "Retrying charge for user 4012 (attempt 2/3, previous: card_declined)" is intent — it tells future-you the why, which is the only thing you actually need at 2am. Events tell you what happened; intent tells you what the code believed. Debugging is reconciling the two.
Structure beats prose
Logs grow up the day you can query them. Key-value or JSON, a request ID threaded through everything, consistent field names. The moment you can ask "show me every line for request X across three services," mean-time-to-understanding collapses. Pretty strings are for humans reading one line; structure is for humans reading ten thousand.
The discipline
You write logs when everything is calm and you'll read them when everything is on fire. That asymmetry is why it feels like a waste in the moment and a miracle in the incident. Write the letter now. Future-you is not in a position to ask follow-up questions.