44 lines
1.8 KiB
Python
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
|