#188 système de logs IN et OUT d'une requête HTTP.

This commit is contained in:
b.nodon
2026-04-02 14:23:14 +02:00
parent 9938a99e07
commit a4bc260e33

View File

@@ -19,21 +19,45 @@
} }
// méthode appelée à chaque requête HTTP // méthode appelée à chaque requête HTTP
/// <summary>
/// Middleware qui log pour suivre la vie d'une requete.
/// </summary>
/// <param name="context"></param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
public async Task InvokeAsync(HttpContext context) public async Task InvokeAsync(HttpContext context)
{ {
// (Avant le contrôleur) // (Avant le contrôleur)
var chronometre = Stopwatch.StartNew(); // lance le chrono var chronometre = Stopwatch.StartNew(); // lance le chrono
// C'est ici que le reste de l'application s'exécute (autres middlewares et Contrôleur) // --- IN ---
var methode = context.Request.Method;
var endpoint = context.Request.Path;
var traceId = context.TraceIdentifier; // Identifiant unique généré par .NET
this.logger.LogInformation($"[IN] TraceId: {traceId} | Méthode: {methode} | Endpoint: {endpoint}");
await this.next(context); await this.next(context);
// (Après le contrôleur) // (Après le contrôleur)
chronometre.Stop(); // arrête le chrono chronometre.Stop(); // arrête le chrono
var tempsEcoule = chronometre.ElapsedMilliseconds; var tempsEcoule = chronometre.ElapsedMilliseconds;
// écrit dans les logs l'URL de la page et le temps qu'elle a pris var httpCode = context.Response.StatusCode; // exemple: 200, 404, 500
var urlPage = context.Request.Path;
this.logger.LogInformation($"[MIDDLEWARE] La page {urlPage} a mis {tempsEcoule} ms à charger."); // --- OUT ---
if (httpCode >= 500)
{
this.logger.LogError($"[OUT] TraceId: {traceId} | HTTP {httpCode} | Temps: {tempsEcoule} ms | Endpoint: {endpoint}");
}
else if (httpCode >= 400)
{
this.logger.LogWarning($"[OUT] TraceId: {traceId} | HTTP {httpCode} | Temps: {tempsEcoule} ms | Endpoint: {endpoint}");
}
else
{
this.logger.LogInformation($"[OUT] TraceId: {traceId} | HTTP {httpCode} | Temps: {tempsEcoule} ms | Endpoint: {endpoint}");
}
} }
} }
} }