Public Access
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
import os
|
|
import logging
|
|
from logging.handlers import TimedRotatingFileHandler
|
|
from datetime import datetime
|
|
|
|
# Chemin absolu obligatoire pour correspondre au volume Docker
|
|
LOG_DIR = "/DATA/AppData/MULTI-IA-AETHAS38"
|
|
os.makedirs(LOG_DIR, exist_ok=True)
|
|
LOG_FILE = os.path.join(LOG_DIR, "aethas_logs.txt")
|
|
|
|
logger = logging.getLogger("Aethas38")
|
|
logger.setLevel(logging.INFO)
|
|
|
|
if not logger.handlers:
|
|
# Conservation 365 jours pour conformité légale
|
|
handler = TimedRotatingFileHandler(LOG_FILE, when="midnight", interval=1, backupCount=365, encoding="utf-8")
|
|
handler.suffix = "%Y-%m-%d"
|
|
formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
|
|
handler.setFormatter(formatter)
|
|
logger.addHandler(handler)
|
|
|
|
def log_event(niveau, source, message):
|
|
msg_formate = f"[{source}] {message}"
|
|
|
|
if niveau.upper() == "INFO": logger.info(msg_formate)
|
|
elif niveau.upper() == "WARNING": logger.warning(msg_formate)
|
|
elif niveau.upper() == "ERROR": logger.error(msg_formate)
|
|
elif niveau.upper() == "CRITICAL": logger.critical(msg_formate)
|
|
|
|
print(f"[{datetime.now().strftime('%H:%M:%S')}] [{niveau}] {msg_formate}")
|
|
|
|
if niveau in ["ERROR", "CRITICAL"]:
|
|
try:
|
|
from modules.debug_mailer import envoyer_alerte_debug
|
|
envoyer_alerte_debug(niveau, source, message)
|
|
except Exception:
|
|
pass |