import logging import os import tempfile import sys # Determine log level from environment variable `LOG_LEVEL` (e.g. DEBUG, INFO) raw_level = os.getenv("LOG_LEVEL", "INFO").upper() level = logging.INFO if raw_level.isdigit(): try: level = int(raw_level) except Exception: level = logging.INFO else: level = getattr(logging, raw_level, logging.INFO) logging.basicConfig(level=level, format='[%(levelname)s] %(asctime)s: %(name)s: %(message)s') LOGGER = logging.getLogger('botmafieux') LOGGER.setLevel(level) # Decide log file path: prefer LOG_FILE, then CONFIG_PATH/botmafieux.log, then /tmp preferred = os.getenv('LOG_FILE') if not preferred: cfg_path = "/logs" if cfg_path: preferred = os.path.join(cfg_path, 'botmafieux.log') else: preferred = os.path.join(tempfile.gettempdir(), 'botmafieux.log') formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s') try: handler = logging.FileHandler(filename=preferred, encoding='utf-8', mode='a') handler.setFormatter(formatter) LOGGER.addHandler(handler) except (PermissionError, OSError) as e: # Fall back to console logging if file cannot be opened stream_handler = logging.StreamHandler(sys.stdout) stream_handler.setFormatter(formatter) LOGGER.addHandler(stream_handler) # Print a warning directly to stderr in case logging isn't yet configured elsewhere print(f"[WARN] Could not open log file '{preferred}' for writing: {e}. Falling back to stdout.", file=sys.stderr)