Aller au contenu principal

Logging & Audit

Nous utilisons une stratégie de logging à deux niveaux : Logs Applicatifs (pour les Développeurs) et Logs d'Audit (pour les Admins).

Logs Applicatifs (Pino)

Sortie standard (stdout) au format JSON.

  • Niveau : Configurable via LOG_LEVEL (info en prod, debug en dev).
  • Format : JSON (traité par FluentBit/Promtail en production).
  • Request ID : Chaque ligne de log inclut request_id pour le traçage.
import logger from "@adonisjs/core/services/logger";

logger.info({ userId: user.id }, "Utilisateur connecté");

Logs d'Audit (Base de Données)

Les actions critiques (Création/Mise à jour/Suppression) sont persistées dans la table logs via LogsService. Cela permet aux Admins de voir "Qui a fait quoi ?" dans le tableau de bord.

Événements Tracés :

  • CAMERA_CREATE, CAMERA_DELETE
  • USER_INVITE
  • SETTINGS_UPDATE
await LogsService.create({
action: "CAMERA_UPDATE",
userId: auth.user.id,
targetId: camera.id,
metadata: { oldName: "Foo", newName: "Bar" },
});