由于日志记录器被调用两次而引起类似的问题。所以在我的例子中,它可能是由第二个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上的顶级结果。