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_idpour 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_DELETEUSER_INVITESETTINGS_UPDATE
await LogsService.create({
action: "CAMERA_UPDATE",
userId: auth.user.id,
targetId: camera.id,
metadata: { oldName: "Foo", newName: "Bar" },
});