70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
"""Entry point for running as module: python -m auto_commit_service"""
|
|
|
|
import logging
|
|
import sys
|
|
from logging.handlers import RotatingFileHandler
|
|
|
|
import uvicorn
|
|
from .config import AutoCommitSettings
|
|
from .app import create_auto_commit_service
|
|
|
|
|
|
def setup_logging(settings: AutoCommitSettings) -> None:
|
|
"""Setup logging to both file and stderr."""
|
|
# Create formatter
|
|
formatter = logging.Formatter(
|
|
"%(asctime)s [%(levelname)s] %(name)s: %(message)s",
|
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
)
|
|
|
|
# Root logger
|
|
root = logging.getLogger()
|
|
root.setLevel(logging.INFO)
|
|
|
|
# File handler with rotation (10MB, keep 3 backups)
|
|
file_handler = RotatingFileHandler(
|
|
settings.log_file,
|
|
maxBytes=10 * 1024 * 1024,
|
|
backupCount=3,
|
|
)
|
|
file_handler.setFormatter(formatter)
|
|
file_handler.setLevel(logging.INFO)
|
|
root.addHandler(file_handler)
|
|
|
|
# Stderr handler
|
|
stderr_handler = logging.StreamHandler(sys.stderr)
|
|
stderr_handler.setFormatter(formatter)
|
|
stderr_handler.setLevel(logging.INFO)
|
|
root.addHandler(stderr_handler)
|
|
|
|
# Reduce noise from httpx and httpcore
|
|
logging.getLogger("httpx").setLevel(logging.WARNING)
|
|
logging.getLogger("httpcore").setLevel(logging.WARNING)
|
|
|
|
logging.info(f"Logging to {settings.log_file}")
|
|
|
|
|
|
def main() -> None:
|
|
"""Run the auto-commit service."""
|
|
settings = AutoCommitSettings(service_name="auto-commit-service")
|
|
|
|
# Setup file logging
|
|
setup_logging(settings)
|
|
|
|
logging.info("Starting auto-commit service...")
|
|
logging.info(f"Repos: {settings.repo_names}")
|
|
logging.info(f"Cycle interval: {settings.cycle_interval_seconds}s")
|
|
logging.info(f"LLM service: {settings.llama_service_url}")
|
|
|
|
app = create_auto_commit_service(settings)
|
|
|
|
uvicorn.run(
|
|
app,
|
|
host=settings.host,
|
|
port=settings.port,
|
|
log_level="info",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|