tail -F my.log | jq <filter>
This is okay, but changing filters isn't trivial, running the commands and displaying side-by-side isn't trivial etc etc. {"timestamp":"2018-06- 29T17:25:47.857Z",
"module":"main",
"msg":"[\"trying to reconnect\"]",
"level":5}
while the human-readable representation for the same message is: global 17:06:067 trying to reconnect
So I'll have one main log file that gets everything in JSON, but that's only useful for post-hoc analysis. I can control what makes it to stdout at runtime but that's just a single view. So right now I've hard-coded the logging to spit out human-readable messages to different files based on the module and level properties. I open the files in auto-revert-tail-mode (emacs).