I am working with Python logging package and I need to log two types of messages:
However I cannot achieve it. Here is my code:
import logging
logger = logging.getLogger("file_logger")
fh = logging.FileHandler("tmp.log")
logger.addHandler(fh)
logging.warning("Message for std output")
logging.getLogger("file_logger").warning("Message for file logger")
When I run this script then following messages are printed in terminal:
WARNING:root:Message for std output
WARNING:file_logger:Message for file logger
How can I fix this behavior so "Message for file logger" will be only printed into the file?
You can fix this by turning off propagation like this:
logger.propagate = False
Without this setting the logging call will be propagated up the logging hierarchy to the root logger. The root logger prints to stdout by default, as you have shown in your example.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With