the complete opposite of the "do one thing and do it well" philosophy.
This is like saying subprocess is a mess because it does more than just call system(). It does one thing: logging, and it does it well.
There are plenty of good reasons why your program shouldn't concern itself with the delivery of logging messages beyond sending them to stderr.
So who, outside my program, am I to give information about which messages should go to syslog, which to stderr, and which sent to a remote logserver? You're advocating the use of dumb pipes and message parsing for something that can be perfectly well done in-process, where all the state is available.
This is like saying subprocess is a mess because it does more than just call system(). It does one thing: logging, and it does it well.
There are plenty of good reasons why your program shouldn't concern itself with the delivery of logging messages beyond sending them to stderr.
So who, outside my program, am I to give information about which messages should go to syslog, which to stderr, and which sent to a remote logserver? You're advocating the use of dumb pipes and message parsing for something that can be perfectly well done in-process, where all the state is available.