Some thoughts from my side (coming from another domain - more embedded):
Whether you use a message string or a named bool does not change anything. It’s still logging.
It’s of course nice to just trace everything and filter / search afterwards, but in embedded for example your machine may just crash if you try that. For that log levels are the traditional way to filter before a log is written.
I don’t get how timestamping / ordering is necessarily worse for logging. Maybe it’s just the framework that is used?
You sure can have hierarchical information in log frameworks
In my opinion log levels sure make sense, but it may vary wildly depending on what you’re doing. We run our software in different environments:
Development machines / VMs
Development boards
Production ECUs
And it’s run by different sets of people:
Devs
Integrators
Customers
…
Depending on the combination of where / who you get different requirements.
I get that Logging is hard and often you get messages with a wrong log level or you’re missing a message at a crucial point etc. But tracing is not better in every way - they should complement each other.
Some thoughts from my side (coming from another domain - more embedded):
In my opinion log levels sure make sense, but it may vary wildly depending on what you’re doing. We run our software in different environments:
And it’s run by different sets of people:
Depending on the combination of where / who you get different requirements.
I get that Logging is hard and often you get messages with a wrong log level or you’re missing a message at a crucial point etc. But tracing is not better in every way - they should complement each other.