gmao/app_new/watchdog_logger.py

47 lines
1.4 KiB
Python
Raw Normal View History

2026-08-14 18:02:25 +02:00
"""Helper de logging centralise pour les watchdogs GMAO."""
import os
import sys
import traceback
from datetime import datetime, timezone
# Insérer /app dans le path si besoin
if '/app' not in sys.path:
sys.path.insert(0, '/app')
def log_to_db(watchdog_name, message, level='info'):
"""Écrit un log dans la base centralisee."""
try:
from app_new import create_app
from app_new.extensions import db
from app_new.core.models.maintenance import WatchdogLog
app = create_app()
with app.app_context():
log = WatchdogLog(
watchdog_name=watchdog_name,
level=level,
message=message
)
db.session.add(log)
db.session.commit()
except Exception:
# Si la DB echoue, on ne bloque pas le watchdog
pass
def log_watchdog(watchdog_name, message, level='info', also_print=True):
"""Logue un evenement watchdog (console + DB)."""
timestamp = datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M:%S')
line = f"[{timestamp}] [{watchdog_name}] [{level.upper()}] {message}"
if also_print:
print(line)
log_to_db(watchdog_name, message, level)
def log_exception(watchdog_name, exc, message=None):
"""Loggue une exception."""
tb = traceback.format_exc()
full = f"{message + ' ' if message else ''}{str(exc)}\n{tb}"
log_watchdog(watchdog_name, full, level='error')