Logger Middleware
Description Générale
Le fichier logger.middleware.ts
contient un middleware Express utilisé pour journaliser les requêtes HTTP entrantes. Il enregistre des informations telles que l'adresse IP du client, la méthode HTTP, et l'URL de la requête. Ce middleware est utile pour le suivi des activités dans l'application et pour le débogage.
Fonctionnalités Principales
1. Journalisation des Requêtes
Le middleware enregistre chaque requête HTTP entrante dans les logs. Les informations enregistrées incluent :
- La méthode HTTP (GET, POST, etc.).
- L'URL de la requête.
- L'adresse IP du client (si activée via une variable d'environnement).
2. Personnalisation via Variables d'Environnement
IS_IP_LOGGED
:- Si défini à
true
, l'adresse IP du client est incluse dans les logs. - Sinon, seuls la méthode et l'URL sont enregistrées.
- Si défini à
3. Passage au Middleware Suivant
Après avoir journalisé la requête, le middleware appelle la fonction next()
pour permettre l'exécution des middlewares ou contrôleurs suivants.
Exemple de Code
Middleware loggerMiddleware
import { Request } from "express";
import { Logger } from "../utils/logger";
/**
* Ce middleware permet de journaliser les requêtes entrantes.
* @category Middlewares
*/
export const loggerMiddleware = async (req: Request, res, next) => {
if (process.env.IS_IP_LOGGED === "true") {
Logger.log(`[${req.ip}] ${req.method} ${req.url}`);
} else {
Logger.log(`${req.method} ${req.url}`);
}
next();
};
Fonctionnement
-
Lecture des Variables d'Environnement :
- Le middleware vérifie la valeur de la variable
IS_IP_LOGGED
pour déterminer si l'adresse IP doit être incluse dans les logs.
- Le middleware vérifie la valeur de la variable
-
Journalisation :
- Si
IS_IP_LOGGED
est défini àtrue
, le middleware enregistre l'adresse IP du client, la méthode HTTP, et l'URL. - Sinon, seuls la méthode HTTP et l'URL sont enregistrées.
- Si
-
Passage au Middleware Suivant :
- La fonction
next()
est appelée pour permettre l'exécution des middlewares ou contrôleurs suivants.
- La fonction
Exemple d'Utilisation
Intégration dans une Application Express
Le middleware peut être appliqué globalement pour journaliser toutes les requêtes.
Exemple :
import express from "express";
import { loggerMiddleware } from "./middlewares/logger.middleware";
const app = express();
// Appliquer le middleware de journalisation
app.use(loggerMiddleware);
// Exemple de route
app.get("/", (req, res) => {
res.send("Bienvenue sur AlgoForge !");
});
// Démarrage du serveur
app.listen(3000, () => {
console.log("Serveur démarré sur le port 3000");
});
Points Techniques
1. Utilisation de Logger
Le middleware utilise le module Logger
pour enregistrer les informations dans les logs. Cela garantit une gestion centralisée et cohérente des journaux.
2. Personnalisation via IS_IP_LOGGED
- En activant ou désactivant la journalisation des adresses IP via la variable d'environnement
IS_IP_LOGGED
, le middleware peut être adapté aux besoins spécifiques de l'application. - Cela permet également de respecter les réglementations sur la confidentialité des données, si nécessaire.
3. Impact Minimal sur les Performances
Le middleware est conçu pour être léger et rapide. Il n'effectue que des opérations de journalisation avant de passer au middleware ou contrôleur suivant.
Exemple de Flux
-
Requête Entrante :
- Un client envoie une requête HTTP à l'application.
-
Exécution du Middleware :
- Le middleware journalise les informations de la requête (méthode, URL, et éventuellement l'adresse IP).
-
Passage au Middleware Suivant :
- La requête est transmise au middleware ou contrôleur suivant pour traitement.
Exemple de Log
Avec IS_IP_LOGGED=true
[192.168.1.1] GET /api/algos
Avec IS_IP_LOGGED=false
GET /api/algos