- Update default models in config to use `claude-opus-4.6`. - Introduce logging configuration to write logs to a file. - Add correlation ID to error responses for better traceability. - Implement diagnostics for summarizing message requests. - Normalize legacy system messages in the API. - Enhance tests to cover new logging and error handling features. - Update README and documentation to reflect changes in model defaults and logging behavior.
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
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
|