Python日志记录器在PyCharm控制台和日志文件上打印两次消息



由于日志记录器被调用两次而引起类似的问题。所以在我的例子中,它可能是由第二个getLogger()引起的。有什么好主意吗?

import logging
import logging.handlers
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
    "the_log.log", maxBytes=3000000, backupCount=2)
formatter = logging.Formatter(
    '[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
# This is required to print messages to the console as well as the log file.
logging.getLogger().addHandler(logging.StreamHandler())

使用配置文件。例:logging.config.fileConfig('logging.ini')

[logger_root]
level=ERROR
handlers=stream_handler
[logger_webserver]
level=DEBUG
handlers=stream_handler
qualname=webserver
propagate=0

当你在配置根记录器和同时使用非根记录器时,你必须设置logger.propagate = 0 (Python 3 Docs)。

我知道这是很久以前的问题,但这是DuckDuckGo上的顶级结果。

最新更新