#180 Middleware pour mesurer le temps de réponse des requêtes HTTP.

This commit is contained in:
b.nodon
2026-04-01 16:24:58 +02:00
parent 727d29889a
commit 9938a99e07
2 changed files with 41 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
namespace Webzine.WebApplication.Middlewares
{
using System.Diagnostics;
public class LogTempsExecutionMiddleware
{
/// <summary>
/// log à chaque requete http.
/// </summary>
// _next représente le maillon suivant dans la chaîne (le prochain middleware ou le contrôleur)
private readonly RequestDelegate next;
private readonly ILogger<LogTempsExecutionMiddleware> logger;
// Le constructeur récupère "_next" et le Logger
public LogTempsExecutionMiddleware(RequestDelegate next, ILogger<LogTempsExecutionMiddleware> logger)
{
this.next = next;
this.logger = logger;
}
// méthode appelée à chaque requête HTTP
public async Task InvokeAsync(HttpContext context)
{
// (Avant le contrôleur)
var chronometre = Stopwatch.StartNew(); // lance le chrono
// C'est ici que le reste de l'application s'exécute (autres middlewares et Contrôleur)
await this.next(context);
// (Après le contrôleur)
chronometre.Stop(); // arrête le chrono
var tempsEcoule = chronometre.ElapsedMilliseconds;
// écrit dans les logs l'URL de la page et le temps qu'elle a pris
var urlPage = context.Request.Path;
this.logger.LogInformation($"[MIDDLEWARE] La page {urlPage} a mis {tempsEcoule} ms à charger.");
}
}
}