【发布时间】:2015-06-18 11:01:44
【问题描述】:
我设置了记录器处理程序,然后启动了 chrome webdriver。当它尝试旋转日志文件时,它会得到 [错误 32],这是因为它无法重命名日志文件。我发现日志文件是由 Chrome 打开的。
我更改了设置记录器的顺序并启动了chrome webdriver。它将成功旋转日志文件。当我的脚本重新启动chrome时,错误再次发生。我每次启动时都必须设置logger.handlers = []新的 chrome webdriver 实例。
我尝试了--disable-logging,但它不起作用。
为什么chrome.exe会打开python logging filehandler的日志文件?
有没有办法避免chrome打开日志文件?
这是我的脚本。
import time
import logging
from selenium import webdriver
from logging.handlers import TimedRotatingFileHandler
logger = logging.getLogger('m')
def set_logger():
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
rotate_file_handler = TimedRotatingFileHandler('D:\\data\\spam.log',
when='s', interval=10, backupCount=10)
rotate_file_handler.setLevel(logging.INFO)
rotate_file_handler.setFormatter(formatter)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
logger.addHandler(rotate_file_handler)
logger.addHandler(console_handler)
if __name__ == '__main__':
# change the order these two, it will work correct.
# or set logger.handlers = [], it will work too.
set_logger()
b = webdriver.Chrome()
for i in range(100):
logger.info(i)
time.sleep(1)
这是 Traceback。(Windows 7 SP1 x86_64,python=2.7.10,chrome=43.0.2357.81,chromedriver=2.15.322448)。
Traceback (most recent call last):
File "C:\Python27\lib\logging\handlers.py", line 77, in emit
self.doRollover()
File "C:\Python27\lib\logging\handler.py", line 350, in doRollover
os.rename(self.baseFilename, dfn)
WindowsError: [Error 32]
Logged from test.py, line 28
【问题讨论】:
-
能否给我们完整的堆栈跟踪信息?
-
已更新。@ArtOfWarfare
-
我认为这与硒或铬没有任何关系。我认为进行该方法调用只会导致大量日志记录。如果您在进行该调用时没有设置日志记录处理程序,则没有问题。所以我会改变这个问题,不再让它看起来像一个硒或铬问题,而是专注于记录和重命名日志文件。
标签: python google-chrome logging webdriver selenium-chromedriver