Files
2026-07-13 13:08:41 +08:00

44 lines
1.8 KiB
Python

import io
import logging
from api.lifespan import _configure_application_logging
def test_configure_application_logging_reuses_uvicorn_terminal_handler(monkeypatch):
root_logger = logging.getLogger()
uvicorn_logger = logging.getLogger("uvicorn")
uvicorn_error_logger = logging.getLogger("uvicorn.error")
original_root_handlers = list(root_logger.handlers)
original_root_level = root_logger.level
original_uvicorn_handlers = list(uvicorn_logger.handlers)
original_uvicorn_propagate = uvicorn_logger.propagate
original_uvicorn_error_handlers = list(uvicorn_error_logger.handlers)
original_uvicorn_error_propagate = uvicorn_error_logger.propagate
stream = io.StringIO()
terminal_handler = logging.StreamHandler(stream)
terminal_handler.setFormatter(logging.Formatter("%(message)s"))
try:
root_logger.handlers.clear()
uvicorn_logger.handlers[:] = [terminal_handler]
uvicorn_logger.propagate = False
uvicorn_error_logger.handlers.clear()
uvicorn_error_logger.propagate = True
monkeypatch.setenv("LOG_LEVEL", "INFO")
_configure_application_logging()
logging.getLogger("templates.v2.generation").info("visible progress log")
assert terminal_handler in root_logger.handlers
assert root_logger.level == logging.INFO
assert "visible progress log" in stream.getvalue()
finally:
root_logger.handlers[:] = original_root_handlers
root_logger.setLevel(original_root_level)
uvicorn_logger.handlers[:] = original_uvicorn_handlers
uvicorn_logger.propagate = original_uvicorn_propagate
uvicorn_error_logger.handlers[:] = original_uvicorn_error_handlers
uvicorn_error_logger.propagate = original_uvicorn_error_propagate