diff --git a/runner_manager/logging.py b/runner_manager/logging.py new file mode 100644 index 00000000..20816f21 --- /dev/null +++ b/runner_manager/logging.py @@ -0,0 +1,20 @@ +import logging + +from runner_manager.dependencies import get_settings + +settings = get_settings() + +log_level = getattr(logging, settings.log_level, logging.INFO) +log = logging.getLogger(settings.name) +log.setLevel(log_level) + +# console handler +console_handler = logging.StreamHandler() +console_handler.setLevel(log_level) + +# formatter +formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") + +# add formatter to console handler +console_handler.setFormatter(formatter) +log.addHandler(console_handler) diff --git a/runner_manager/models/settings.py b/runner_manager/models/settings.py index 9a34bef7..23118add 100644 --- a/runner_manager/models/settings.py +++ b/runner_manager/models/settings.py @@ -1,3 +1,4 @@ +from enum import Enum from pathlib import Path from typing import Any, Dict, Optional @@ -21,11 +22,19 @@ def yaml_config_settings_source(settings: BaseSettings) -> Dict[str, Any]: return {} +class LogLevel(str, Enum): + INFO = "INFO" + WARNING = "WARNING" + DEBUG = "DEBUG" + ERROR = "ERROR" + + class Settings(BaseSettings): name: Optional[str] = "runner-manager" redis_om_url: Optional[RedisDsn] = None github_base_url: Optional[AnyHttpUrl] = None github_webhook_secret: Optional[SecretStr] = None + log_level: LogLevel = LogLevel.INFO class Config: smart_union = True