The recipe as you pointed out works by logging to both (just using multiple
handlers).
The objective is to log *up to a level* to stdout and the rest to stderr.
See the example console handler here
https://github.com/mariocj89/cpython/commit/501cfcd0f4cad1e04d87b89784988c52...
and
the filter here
https://gist.github.com/mariocj89/7d873fc84bf8723f5e2740adbeccde12.
Good point about just adding it to the how-to.
On 10 February 2018 at 20:20, Chris Angelico
Hello All!
I got asked how to configure the logging stack to be able to output
On Sun, Feb 11, 2018 at 6:29 AM, Mario Corchero
wrote: directly to console using both stdout and stderr and I could not really find a great answer as adding both as StreamHandlers will result in error and above messages going to stdout.
There's a recipe in the docs that shows how to "fork" to console and file:
https://docs.python.org/3/howto/logging-cookbook.html#logging-to-multiple- destinations
I presume that's what you were looking at? Because yes, that'll do exactly what you say.
The usecase is having a cli or app that wants to log to console as other tools. Errors and bove to stderr and normal information to stdout. I know the recommended way in Python is to just use print on simple scripts, but it can happen that you import a library you want to see the logs of, and therefore you need to set the logging stack.
I have drafted two implementations but I am open to suggestions: 1) A "Console Handler" that uses multiple streams and chooses based on the level. 2) An inverted filter that can be used to filter everything above info for the stdout Stream handler.
What do you people think? If people like it I'll send an issue + PR.
It would be an interesting variant on the recipe to say "debug and above, but NOT error and above, goes to this stream". How complex are the implementations? Would they fit nicely into the cookbook?
ChrisA _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/