MCPcopy
hub / github.com/pytest-dev/pytest / LoggingPlugin

Class LoggingPlugin

src/_pytest/logging.py:656–894  ·  view source on GitHub ↗

Attaches to the logging module and captures log messages for each test.

Source from the content-addressed store, hash-verified

654
655
656class LoggingPlugin:
657 """Attaches to the logging module and captures log messages for each test."""
658
659 def __init__(self, config: Config) -> None:
660 """Create a new plugin to capture log messages.
661
662 The formatter can be safely shared across all handlers so
663 create a single one for the entire test session here.
664 """
665 self._config = config
666
667 # Report logging.
668 self.formatter = self._create_formatter(
669 get_option_ini(config, "log_format"),
670 get_option_ini(config, "log_date_format"),
671 get_option_ini(config, "log_auto_indent"),
672 )
673 self.log_level = get_log_level_for_setting(config, "log_level")
674 self.caplog_handler = LogCaptureHandler()
675 self.caplog_handler.setFormatter(self.formatter)
676 self.report_handler = LogCaptureHandler()
677 self.report_handler.setFormatter(self.formatter)
678
679 # File logging.
680 self.log_file_level = get_log_level_for_setting(
681 config, "log_file_level", "log_level"
682 )
683 log_file = get_option_ini(config, "log_file") or os.devnull
684 if log_file != os.devnull:
685 directory = os.path.dirname(os.path.abspath(log_file))
686 if not os.path.isdir(directory):
687 os.makedirs(directory)
688
689 self.log_file_mode = get_option_ini(config, "log_file_mode") or "w"
690 self.log_file_handler = _FileHandler(
691 log_file, mode=self.log_file_mode, encoding="UTF-8"
692 )
693 log_file_format = get_option_ini(config, "log_file_format", "log_format")
694 log_file_date_format = get_option_ini(
695 config, "log_file_date_format", "log_date_format"
696 )
697
698 log_file_formatter = DatetimeFormatter(
699 log_file_format, datefmt=log_file_date_format
700 )
701 self.log_file_handler.setFormatter(log_file_formatter)
702
703 # CLI/live logging.
704 self.log_cli_level = get_log_level_for_setting(
705 config, "log_cli_level", "log_level"
706 )
707 if self._log_cli_enabled():
708 terminal_reporter = config.pluginmanager.get_plugin("terminalreporter")
709 # Guaranteed by `_log_cli_enabled()`.
710 assert terminal_reporter is not None
711 capture_manager = config.pluginmanager.get_plugin("capturemanager")
712 # if capturemanager plugin is disabled, live logging still works.
713 self.log_cli_handler: (

Callers 1

pytest_configureFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected