mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-08 23:00:43 +08:00
Merge pull request #695 from Codium-ai/ok/analytics
Add support for analytics file
This commit is contained in:
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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':
|
||||||
|
Reference in New Issue
Block a user