Why is logging so hard?
It needs to be explicitly inserted.
It has a performance cost which is often too high.
If you forget a log, there is no way to retroactively fix it.
So here’s a problem statement: how can you know what has happened to a program so that you could understand how it got to a certain state, without working hard and failing so often? I have no answer. I think the problem is that the issue should be fixed at the programming language level. Programming languages have not been optimized for server/appliance fire-and-forget-until-there-is-something-wrong, and so have not been appropriately optimized for tracability. I wonder if the mythical 100 year language would solve that too, and how the solution would look like.