我有一个应用程序,它使用日志记录模块以及许多其他模块,包括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的一些日志对我很重要。
我在这里错过了什么吗?我该如何解决这个问题?感谢改进代码的建议!