为什么日志记录模块会在Python中记录多条消息?

时间:2019-12-03 19:37:16

标签: python-3.x logging console-application python-logging

我有一个应用程序,它使用日志记录模块以及许多其他模块,包括tensorflow,sklearn,matplotlib等。

我想将消息记录到控制台,并且我有以下代码:

ownlogger = logging.getLogger(__name__)
ownlogger.setLevel(logging.INFO)

logger_stream_handler = logging.StreamHandler()
logger_stream_format = logging.Formatter('%(asctime)s.%(msecs)03d %(levelname)4s - %(message)s', 
                                                                    datefmt='%Y-%m-%d %H:%M:%S')
logger_stream_handler.setFormatter(logger_stream_format)

logger_file_handler = logging.FileHandler('Application_Logs.log')
logger_file_handler.setFormatter(logger_stream_format)ownlogger.addHandler(logger_file_handler)
ownlogger.addHandler(logger_stream_handler)

ownlogger.info("Application Started.")

现在,当我运行此命令时,每次调用ownlogger都会得到这条额外的线:

2019-12-04 00:39:33.618 INFO - Application Started.
I1204 00:39:33.618484  1284 Application.py:73] Application Started.

但是,在我的Application_Logs.log中,输出是预期的,只有第一行。

据我所知,我认为这是由于我的进口之一。但是通过使用logging.root.manager.loggerDict,我得到了40多个记录器,它们都设置为logging.WARNING级别。因此,根据docs,它不应显示info级消息。 为这些记录器设置不同的级别将无法达到我的目的,因为来自matplotlib和tensorflow的一些日志对我很重要。

我在这里错过了什么吗?我该如何解决这个问题?感谢改进代码的建议!

0 个答案:

没有答案