News for hackers. Stuff that matters.
Re:The Five Levels of Logging by hinkley on Friday September 14, 2018 @04:13PM (#17990559)
Logging is one of the weirder cross cutting concerns, for many reasons but especially including the one you mention.

We had to roll back an upgrade last month because one nonfatal (but still pretty bad) problem was generating a ridiculous amount of log entries. We had no way to turn it off or throttle it, so we rolled back.

I have fantasized for years about a programming language with a small runtime that supports instrumentation of the code, not just for debugging and profiling, but for logging as well. Logging becomes a set of conditional breakpoints stored with or at least near the code and you can tweak them individually.

Something akin to applying the 80/20 rule to Aspect Oriented Programming.

We fake this by implementing logging frameworks that try to short circuit out cheaply. But it really only pays off if you can marshal the arguments to the logger very cheaply, and you still have problems with third party code, which can't know that you've got workarounds for problems they consider to be fatal, and are therefore so noisy at the WARN or INFO log levels that you can't see your own log entries (Apache Foundation, I'm looking at you).

Re:The Five Levels of Logging by Rapzid on Friday September 14, 2018 @05:50PM (#17991272)
Re:The Five Levels of Logging by hinkley on Friday September 14, 2018 @07:44PM (#17991988)
It's buried but my IDE has a similar feature.

I meant support for running systems, not local development.

Re:The Five Levels of Logging by Rapzid on Friday September 14, 2018 @08:30PM (#17992185)
"Logpoints are especially useful for injecting logging while debugging production servers that cannot be paused or stopped."

There is a lot more going on with them than you might realize. Not sure how coupled it is to the nodejs/kubernetes/Azure stuff they have built into VSCode, but it seems like a working example of the future. Sorta like time travel debugging in node-chakracore.

Windows has this facility called EWT that lets you setup all sorts of eventing/tracing that is actually not present(the calls) in the code unless the EWT facility injects the code necessary to enable it into the running process. This allows you to dynamically enable and disable event sources based on stuff like.. whether or not something is currently subscribing to it. Worth looking into just for the sheer amazement of it if you are not a Windows developer and familiar with it.