我正在使用Python日志记录程序包,我需要记录两种类型的消息:
但是我无法实现。这是我的代码:
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")
当我运行此脚本时,终端上将显示以下消息:
WARNING:root:Message for std output
WARNING:file_logger:Message for file logger
如何解决此问题,以便仅将“用于文件记录器的消息”打印到文件中?
答案 0 :(得分:2)
您可以通过关闭传播来解决此问题:
logger.propagate = False
没有此设置,日志记录调用将沿日志记录层次结构传播到根记录器。 如您的示例所示,默认情况下,根记录器将打印到stdout。
答案 1 :(得分:0)
import logging
LOG_FILENAME = 'example.log'
logging.propagate = false
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
logging.debug('This message should go to the log file')
尝试此操作,它应该可以工作,您需要禁用传播(默认情况下,根记录器将打印到stdout)并定义文件中所需的记录级别。