Files
botmafieux/setup/logger.py
Mathéo 'Nebulo9' DESSAUVAGES 8cbb77be3c
Some checks failed
CI / Run tests (pull_request) Has been cancelled
feat: Reimplement the deployment process through Docker
2026-09-20 00:33:10 +02:00

42 lines
1.4 KiB
Python

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)