from __future__ import annotations import logging from nexus_claude_api.logging_config import configure_logging def test_configure_logging_writes_app_logs_to_file_without_console( tmp_path, capsys, ) -> None: log_file = tmp_path / "nexus-claude-api.log" logger = logging.getLogger("nexus_claude_api.routes.messages") app_logger = logging.getLogger("nexus_claude_api") original_handlers = app_logger.handlers[:] original_level = app_logger.level original_propagate = app_logger.propagate try: configure_logging(verbose=False, log_file=log_file) logger.info("detailed app request") logger.debug("debug details hidden without verbose") output = capsys.readouterr() log_text = log_file.read_text(encoding="utf-8") assert output.err == "" assert "detailed app request" in log_text assert "debug details hidden without verbose" not in log_text finally: app_logger.handlers.clear() app_logger.handlers.extend(original_handlers) app_logger.setLevel(original_level) app_logger.propagate = original_propagate def test_configure_logging_verbose_writes_debug_app_logs_to_file( tmp_path, ) -> None: log_file = tmp_path / "nexus-claude-api.log" logger = logging.getLogger("nexus_claude_api.routes.messages") app_logger = logging.getLogger("nexus_claude_api") original_handlers = app_logger.handlers[:] original_level = app_logger.level original_propagate = app_logger.propagate try: configure_logging(verbose=True, log_file=log_file) logger.debug("debug details stay in file") assert "debug details stay in file" in log_file.read_text(encoding="utf-8") finally: app_logger.handlers.clear() app_logger.handlers.extend(original_handlers) app_logger.setLevel(original_level) app_logger.propagate = original_propagate