MCPcopy Create free account
hub / github.com/pytest-dev/pytest / catching_logs

Class catching_logs

src/_pytest/logging.py:299–322  ·  view source on GitHub ↗

Context manager that prepares the whole logging machinery properly.

Source from the content-addressed store, hash-verified

297
298# Not using @contextmanager for performance reasons.
299class catching_logs:
300 """Context manager that prepares the whole logging machinery properly."""
301
302 __slots__ = ("handler", "level", "orig_level")
303
304 def __init__(self, handler: _HandlerType, level: Optional[int] = None) -> None:
305 self.handler = handler
306 self.level = level
307
308 def __enter__(self):
309 root_logger = logging.getLogger()
310 if self.level is not None:
311 self.handler.setLevel(self.level)
312 root_logger.addHandler(self.handler)
313 if self.level is not None:
314 self.orig_level = root_logger.level
315 root_logger.setLevel(min(self.orig_level, self.level))
316 return self.handler
317
318 def __exit__(self, type, value, traceback):
319 root_logger = logging.getLogger()
320 if self.level is not None:
321 root_logger.setLevel(self.orig_level)
322 root_logger.removeHandler(self.handler)
323
324
325class LogCaptureHandler(logging.StreamHandler):

Callers 5

pytest_sessionstartMethod · 0.85
pytest_collectionMethod · 0.85
pytest_runtestloopMethod · 0.85
_runtest_forMethod · 0.85
pytest_sessionfinishMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected