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

时间:2015-07-10 19:56:21

标签: python-2.7 logging

类似的问题是由记录器被调用两次引起的。所以在我的情况下,它可能是由第二个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())

1 个答案:

答案 0 :(得分:1)

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

[logger_root]
level=ERROR
handlers=stream_handler

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

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

我知道这是很久以前的问题,但这是DuckDuckGo的最佳结果。