#188 système de logs IN et OUT d'une requête HTTP.
This commit is contained in:
@@ -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}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user