Python 2.7 Python logger正在PyCharm控制台和日志文件上打印两次消息
类似的问题是由记录者两次被叫引起的。因此,在我的例子中,它可能是由第二个Python 2.7 Python logger正在PyCharm控制台和日志文件上打印两次消息,python-2.7,logging,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,
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())
使用配置文件。e、 g.
logging.config.fileConfig('logging.ini')
在配置根记录器和同时使用非根记录器时,必须设置
logger.propagate=0
()
我知道这是很久以前提出的问题,但这是DuckDuckGo的最高结果。是将同一行打印两次到控制台和文件,还是将每一行打印一次?这并不清楚,因为问题标题暗示了前者,但您在示例代码中的注释暗示了后者。如果这是第二种情况,我可以提交一个解释原因的答案。否则,我只有一些想法可以尝试。谢谢-我已经澄清了这个问题。是前者。我想打印到日志文件和控制台。但我只想把它打印到每一张上。但目前我在控制台和日志文件上都收到了一条重复的消息。您有可能导入此文件两次吗?参见中的示例。我将通过在那里抛出一些断言来开始故障排除。例如,在设置处理程序之前,
assert 0==len(logger.handlers)
-堆栈跟踪可能会指向此处的第二个导入程序。
[logger_root]
level=ERROR
handlers=stream_handler
[logger_webserver]
level=DEBUG
handlers=stream_handler
qualname=webserver
propagate=0