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 loguru import logger
from pr_agent.config_loader import get_settings
class LoggingFormat(str, Enum): class LoggingFormat(str, Enum):
CONSOLE = "CONSOLE" CONSOLE = "CONSOLE"
@ -16,6 +18,10 @@ def json_format(record: dict) -> str:
return record["message"] 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): def setup_logger(level: str = "INFO", fmt: LoggingFormat = LoggingFormat.CONSOLE):
level: int = logging.getLevelName(level.upper()) level: int = logging.getLevelName(level.upper())
if type(level) is not int: if type(level) is not int:
@ -34,6 +40,19 @@ def setup_logger(level: str = "INFO", fmt: LoggingFormat = LoggingFormat.CONSOLE
logger.remove(None) logger.remove(None)
logger.add(sys.stdout, level=level, colorize=True) 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 return logger

View File

@ -1,7 +1,8 @@
import asyncio.locks
import copy import copy
import os import os
import asyncio.locks
import re import re
import uuid
from typing import Any, Dict, List, Tuple from typing import Any, Dict, List, Tuple
import uvicorn 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.algo.utils import update_settings_from_args
from pr_agent.config_loader import get_settings, global_settings from pr_agent.config_loader import get_settings, global_settings
from pr_agent.git_providers import get_git_provider 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.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.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) setup_logger(fmt=LoggingFormat.JSON)
@ -204,7 +205,8 @@ async def handle_request(body: Dict[str, Any], event: str):
return {} return {}
agent = PRAgent() agent = PRAgent()
sender = body.get("sender", {}).get("login") 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 # handle comments on PRs
if action == 'created': if action == 'created':