Merge pull request #695 from Codium-ai/ok/analytics

Add support for analytics file
This commit is contained in:
Ori Kotek
2024-02-25 11:17:09 +02:00
committed by GitHub
2 changed files with 25 additions and 4 deletions

View File

@ -6,6 +6,8 @@ from enum import Enum
from loguru import logger
from pr_agent.config_loader import get_settings
class LoggingFormat(str, Enum):
CONSOLE = "CONSOLE"
@ -16,6 +18,10 @@ def json_format(record: dict) -> str:
return record["message"]
def analytics_filter(record: dict) -> bool:
return record.get("extra", {}).get("analytics", False)
def setup_logger(level: str = "INFO", fmt: LoggingFormat = LoggingFormat.CONSOLE):
level: int = logging.getLevelName(level.upper())
if type(level) is not int:
@ -34,6 +40,19 @@ def setup_logger(level: str = "INFO", fmt: LoggingFormat = LoggingFormat.CONSOLE
logger.remove(None)
logger.add(sys.stdout, level=level, colorize=True)
log_folder = get_settings().get("CONFIG.ANALYTICS_FOLDER", "")
if log_folder:
pid = os.getpid()
log_file = os.path.join(log_folder, f"pr-agent.{pid}.log")
logger.add(
log_file,
filter=analytics_filter,
level=level,
format="{message}",
colorize=False,
serialize=True,
)
return logger

View File

@ -1,7 +1,8 @@
import asyncio.locks
import copy
import os
import asyncio.locks
import re
import uuid
from typing import Any, Dict, List, Tuple
import uvicorn
@ -14,10 +15,10 @@ from pr_agent.agent.pr_agent import PRAgent
from pr_agent.algo.utils import update_settings_from_args
from pr_agent.config_loader import get_settings, global_settings
from pr_agent.git_providers import get_git_provider
from pr_agent.git_providers.utils import apply_repo_settings
from pr_agent.git_providers.git_provider import IncrementalPR
from pr_agent.git_providers.utils import apply_repo_settings
from pr_agent.log import LoggingFormat, get_logger, setup_logger
from pr_agent.servers.utils import verify_signature, DefaultDictWithTimeout
from pr_agent.servers.utils import DefaultDictWithTimeout, verify_signature
setup_logger(fmt=LoggingFormat.JSON)
@ -204,7 +205,8 @@ async def handle_request(body: Dict[str, Any], event: str):
return {}
agent = PRAgent()
sender = body.get("sender", {}).get("login")
log_context = {"action": action, "event": event, "sender": sender, "server_type": "github_app"}
log_context = {"action": action, "event": event, "sender": sender, "server_type": "github_app",
"request_id": uuid.uuid4().hex}
# handle comments on PRs
if action == 'created':