使用单个Logger时出现重复打印问题,如何解决?
问题解决:仅打印指定日志内容
出现两行输出的原因是:Colab环境中Python的根日志记录器(root logger)默认已配置处理器,当自定义日志记录器未关闭传播性时,日志信息会同时传递给自定义处理器和根日志处理器,导致重复输出第二行带INFO:__main__:的内容。
解决方法是在配置日志记录器时关闭其传播性:
from logging import getLogger, INFO, StreamHandler, FileHandler, Formatter log_file = 'test.txt' logger = getLogger(__name__) logger.setLevel(INFO) # 关闭日志传播,避免传递给根日志处理器 logger.propagate = False handler1 = StreamHandler() handler1.setFormatter(Formatter('%(message)s')) handler2 = FileHandler(filename=f'{log_file}.log') handler2.setFormatter(Formatter('%(message)s')) logger.addHandler(handler1) logger.addHandler(handler2) logger.info("HELLO")
运行后只会输出一行HELLO,同时日志内容也会写入test.txt.log文件中。
内容的提问来源于stack exchange,提问作者alryosha
相关产品推荐
相关产品推荐

