Python日志记录。FileHandler将消息打印到标准输出中

时间:2020-04-01 08:20:24

标签: python logging

我正在使用Python日志记录程序包,我需要记录两种类型的消息:

  1. 仅应登录到标准输出中的消息
  2. 仅应登录到文件中的消息。

但是我无法实现。这是我的代码:

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

如何解决此问题,以便仅将“用于文件记录器的消息”打印到文件中?

2 个答案:

答案 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)并定义文件中所需的记录级别。

相关问题