diff --git a/src/aarecommon/config/logger.py b/src/aarecommon/config/logger.py index 64654e7..be64de5 100644 --- a/src/aarecommon/config/logger.py +++ b/src/aarecommon/config/logger.py @@ -1,9 +1,6 @@ import logging import logging.config import os -from pathlib import Path - -import yaml class IgnoreSuccessfulStatusAccessFilter(logging.Filter): @@ -69,56 +66,45 @@ def get_uvicorn_logging_config() -> dict: } -def get_config_path(env: str = "dev") -> Path: - module_dir = Path(__file__).parent - config_filename = f"logging_{env}.yaml" - config_path = module_dir / "logging_configs" / config_filename - - if not config_path.exists(): - raise FileNotFoundError(f"Logging config not found: {config_path}") - - return config_path +AARE_LOG_CONFIG = { + "version": 1, + "disable_existing_loggers": False, + "formatters": {"simple": {"format": "%(asctime)s - %(levelname)s - %(message)s"}}, + "handlers": { + "console": { + "class": "logging.StreamHandler", + "formatter": "simple", + "level": "DEBUG", + "stream": " ext://sys.stdout", + } + }, + "loggers": { + "aareDAQ": {"level": "DEBUG"}, + "aareGUI": {"level": "DEBUG"}, + "redis_lock": {"level": "WARNING"}, + "urllib3": {"level": "WARNING"}, + "matplotlib": {"level": "WARNING"}, + }, + "root": {"level": "WARNING", "handlers": ["console"]}, +} -# TODO fix logging. -def setup_logger( - name="aareDAQ", base_dir: str | None = "~/tmp/mxlogs/", config_path: str | None = None -): - # switch to production mode using: $ APP_ENV=prod python main.py - env = os.getenv("APP_ENV", "dev") # default: dev +_setup_done: bool = False +_additional_loggers_setup: set[str] = set() - if config_path is None: - config_file = get_config_path(env) - else: - config_file = Path(config_path) - with open(config_file, "r") as f: - config = yaml.safe_load(f.read()) +def setup_logger(name: str): + logger = logging.getLogger(name) + if name not in _additional_loggers_setup: + _additional_loggers_setup.add(name) + logger.setLevel(logging.DEBUG) - # Force base directory to be under the user's home dir - effective_base = base_dir + f"{name}" or f"/tmp/logs/mxlogs/{name}" - effective_base = os.path.abspath(os.path.expanduser(os.path.expandvars(effective_base))) + global _setup_done + if _setup_done: + return logger - # Ensure directories for file handlers exist - handlers = config.get("handlers", {}) - - for h in handlers.values(): - filename = h.get("filename") - if not filename: - continue - abs_filename = os.path.join(effective_base, os.path.basename(filename)) - - h["filename"] = abs_filename - log_dir = os.path.dirname(abs_filename) - if log_dir and not os.path.exists(log_dir): - os.makedirs(log_dir, exist_ok=True) - - logging.config.dictConfig(config) - logging.getLogger("redis_lock").setLevel(logging.WARNING) - logging.getLogger("urllib3").setLevel(logging.WARNING) - logging.getLogger("matplotlib.font_manager").setLevel(logging.WARNING) - logging.getLogger("aaredaq").setLevel(logging.DEBUG) # DAQ - logging.getLogger("aaregui").setLevel(logging.INFO) + logging.config.dictConfig(AARE_LOG_CONFIG) + _setup_done = True return logging.getLogger(name) diff --git a/src/aarecommon/config/logging_configs/logging_dev.yaml b/src/aarecommon/config/logging_configs/logging_dev.yaml deleted file mode 100644 index 571696b..0000000 --- a/src/aarecommon/config/logging_configs/logging_dev.yaml +++ /dev/null @@ -1,45 +0,0 @@ -version: 1 -disable_existing_loggers: False - -formatters: - detailed: - format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" - -handlers: - console: - class: logging.StreamHandler - level: DEBUG - formatter: detailed - stream: ext://sys.stdout - - app_file: - class: logging.handlers.RotatingFileHandler - level: DEBUG - formatter: detailed - filename: app.log - maxBytes: 1440000 #not to overflow a diskette - backupCount: 10 - encoding: utf8 - - error_file: - class: logging.handlers.RotatingFileHandler - level: ERROR - formatter: detailed - filename: errors.log - maxBytes: 1440000 - backupCount: 5 - encoding: utf8 - -loggers: - aareDAQ: - level: DEBUG - handlers: [console, app_file, error_file] - propagate: yes - aareGUI: - level: DEBUG - handlers: [ console, app_file, error_file ] - propagate: yes - -root: - level: DEBUG - handlers: [console] \ No newline at end of file diff --git a/src/aarecommon/config/logging_configs/logging_prod.yaml b/src/aarecommon/config/logging_configs/logging_prod.yaml deleted file mode 100644 index d9e42fd..0000000 --- a/src/aarecommon/config/logging_configs/logging_prod.yaml +++ /dev/null @@ -1,39 +0,0 @@ -version: 1 -disable_existing_loggers: False - -formatters: - simple: - format: "%(asctime)s - %(levelname)s - %(message)s" - -handlers: - app_file: - class: logging.handlers.RotatingFileHandler - level: INFO - formatter: simple - filename: logs/app.log - maxBytes: 1000000 - backupCount: 10 - encoding: utf8 - - error_file: - class: logging.handlers.RotatingFileHandler - level: ERROR - formatter: simple - filename: logs/errors.log - maxBytes: 500000 - backupCount: 5 - encoding: utf8 - -loggers: - aareDAQ: - level: DEBUG - handlers: [console, app_file, error_file] - propagate: no - aareGUI: - level: DEBUG - handlers: [ console, app_file, error_file ] - propagate: n - -root: - level: WARNING - handlers: []