diff --git a/pr_agent/log/__init__.py b/pr_agent/log/__init__.py index 665988ef..03722cb1 100644 --- a/pr_agent/log/__init__.py +++ b/pr_agent/log/__init__.py @@ -5,6 +5,8 @@ from enum import Enum from loguru import logger +from pr_agent.config_loader import get_settings + class LoggingFormat(str, Enum): CONSOLE = "CONSOLE" @@ -15,6 +17,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: @@ -33,6 +39,17 @@ def setup_logger(level: str = "INFO", fmt: LoggingFormat = LoggingFormat.CONSOLE logger.remove(None) logger.add(sys.stdout, level=level, colorize=True) + log_file = get_settings().get("CONFIG.ANALYTICS_FILE", "") + if log_file: + logger.add( + log_file, + filter=analytics_filter, + level=level, + format="{message}", + colorize=False, + serialize=True, + ) + return logger