Skip to content

Commit de11854

Browse files
authored
Only register request and response loggers when needed (#336)
1 parent a2a844f commit de11854

File tree

2 files changed

+55
-2
lines changed

2 files changed

+55
-2
lines changed

scrapy_playwright/handler.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -324,10 +324,11 @@ async def _create_page(self, request: Request, spider: Spider) -> Page:
324324

325325
page.on("close", self._make_close_page_callback(context_name))
326326
page.on("crash", self._make_close_page_callback(context_name))
327-
page.on("request", _make_request_logger(context_name, spider))
328-
page.on("response", _make_response_logger(context_name, spider))
329327
page.on("request", self._increment_request_stats)
330328
page.on("response", self._increment_response_stats)
329+
if logger.getEffectiveLevel() <= logging.DEBUG:
330+
page.on("request", _make_request_logger(context_name, spider))
331+
page.on("response", _make_response_logger(context_name, spider))
331332

332333
return page
333334

tests/tests_asyncio/test_playwright_requests.py

+52
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,58 @@ async def test_logging_record_spider(self):
389389

390390
assert any(getattr(rec, "spider", None) is spider for rec in self._caplog.records)
391391

392+
@allow_windows
393+
@patch("scrapy_playwright.handler._make_request_logger")
394+
async def test_request_logger_disabled(self, make_request_logger: MagicMock):
395+
self._caplog.set_level(logging.DEBUG + 1, "scrapy-playwright")
396+
async with make_handler({"PLAYWRIGHT_BROWSER_TYPE": self.browser_type}) as handler:
397+
with MockServer() as server:
398+
req = Request(url=server.urljoin("/index.html"), meta={"playwright": True})
399+
await handler._download_request(req, Spider("foo"))
400+
401+
debug_message = (
402+
f"[Context=default] Request: <{req.method} {req.url}> (resource type: document)"
403+
)
404+
assert not any(rec.message == debug_message for rec in self._caplog.records)
405+
make_request_logger.assert_not_called()
406+
407+
@allow_windows
408+
async def test_request_logger_enabled(self):
409+
self._caplog.set_level(logging.DEBUG, "scrapy-playwright")
410+
async with make_handler({"PLAYWRIGHT_BROWSER_TYPE": self.browser_type}) as handler:
411+
with MockServer() as server:
412+
req = Request(url=server.urljoin("/index.html"), meta={"playwright": True})
413+
await handler._download_request(req, Spider("foo"))
414+
415+
debug_message = (
416+
f"[Context=default] Request: <{req.method} {req.url}> (resource type: document)"
417+
)
418+
assert any(rec.message == debug_message for rec in self._caplog.records)
419+
420+
@allow_windows
421+
@patch("scrapy_playwright.handler._make_response_logger")
422+
async def test_response_logger_disabled(self, make_response_logger: MagicMock):
423+
self._caplog.set_level(logging.DEBUG + 1, "scrapy-playwright")
424+
async with make_handler({"PLAYWRIGHT_BROWSER_TYPE": self.browser_type}) as handler:
425+
with MockServer() as server:
426+
req = Request(url=server.urljoin("/index.html"), meta={"playwright": True})
427+
response = await handler._download_request(req, Spider("foo"))
428+
429+
debug_message = f"[Context=default] Response: <{response.status} {response.url}>"
430+
assert not any(rec.message == debug_message for rec in self._caplog.records)
431+
make_response_logger.assert_not_called()
432+
433+
@allow_windows
434+
async def test_response_logger_enabled(self):
435+
self._caplog.set_level(logging.DEBUG, "scrapy-playwright")
436+
async with make_handler({"PLAYWRIGHT_BROWSER_TYPE": self.browser_type}) as handler:
437+
with MockServer() as server:
438+
request = Request(url=server.urljoin("/index.html"), meta={"playwright": True})
439+
response = await handler._download_request(request, Spider("foo"))
440+
441+
debug_message = f"[Context=default] Response: <{response.status} {response.url}>"
442+
assert any(rec.message == debug_message for rec in self._caplog.records)
443+
392444
@allow_windows
393445
async def test_download_file_ok(self):
394446
settings_dict = {

0 commit comments

Comments
 (0)