Oussama SAIDI

0 %
Oussama SAIDI
Consultant .Net
Sharepoint Office 365

  • Résidence:
    France
  • Ville:
    Lille
Arabe
Français
Anglais
.Net
Html/Css/Js
Web Api
Base de données
  • C#,.Net Core, .Net MVC
  • Rest Api
  • Docker
  • GIT,TFS

Maîtriser les Logs Structurés avec Serilog dans ASP.NET Core 8

septembre 21, 2022

Guide Complet Serilog avec Exemples pour SQL Server et le Cloud

Introduction

Aujourd’hui, les applications modernes génèrent des volumes croissants de données. Pour les développer efficacement, une solution de journalisation robuste devient indispensable. Parmi les outils disponibles, Serilog se distingue comme l’une des meilleures bibliothèques de logging pour .NET.

Dans ce tutoriel, nous allons découvrir comment l’implémenter dans ASP.NET Core 8. Vous apprendrez à configurer des sinks pour SQL Server et le cloud, à résoudre les problèmes courants et à adopter les bonnes pratiques.


Pourquoi Choisir Serilog ?

Contrairement au système de logging par défaut d’ASP.NET Core, Serilog offre plusieurs avantages majeurs :

Logs structurés : Format JSON pour une analyse simplifiée
Plus de 100 sinks : Support pour SQL Server, Elasticsearch, Slack, etc.
Enrichissement facile : Ajout automatique d’infos comme l’ID utilisateur
Performances optimisées : Traitement asynchrone non bloquant

Grâce à ces fonctionnalités, Serilog s’impose comme l’outil idéal pour les applications professionnelles.


Étape 1 : Installation des Packages Serilog avec NuGet

Pour commencer, ajoutez ces packages à votre projet :

dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Sinks.MSSqlServer
dotnet add package Serilog.Sinks.Console

Cette configuration de base vous permettra de stocker les logs dans une base de données SQL Server tout en les affichant dans la console.


Étape 2 : Configuration Serilog dans appsettings.json

Ensuite, configurez Serilog dans votre fichier de paramètres :

{
  "Serilog": {
    "Using": ["Serilog.Sinks.Console"],
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "{Timestamp:HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
        }
      },
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "Server=.;Database=Logs;Trusted_Connection=True;",
          "tableName": "LogEvents"
        }
      }
    ]
  }
}

Cette configuration offre un bon équilibre entre lisibilité et richesse d’information.


Étape 3 : Initialisation dans Program.cs

Maintenant, initialisez Serilog dans le point d’entrée de votre application :

using Serilog;

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseSerilog((ctx, lc) => lc
    .ReadFrom.Configuration(ctx.Configuration)
    .Enrich.WithProperty("Application", "MonApp")
    .Enrich.WithCorrelationId());

var app = builder.Build();

app.UseSerilogRequestLogging();

app.MapGet("/", () => {
    Log.Information("Page d'accès visitée à {Timestamp}", DateTime.UtcNow);
    return "Bonjour !";
});

app.Run();

Cette implémentation permet de capturer automatiquement les requêtes HTTP.


Cas d’Usage de Serilog Avancés

1. Journalisation dans le Cloud (Azure Application Insights)

Pour une solution cloud, ajoutez simplement :

.WriteTo.ApplicationInsights(
    "<CLÉ_INSTRUMENTATION>",
    TelemetryConverter.Traces)

2. Surveillance des Erreurs (Sentry.io)

Configurez Sentry pour le suivi des erreurs critiques :

dotnet add package Serilog.Sinks.Sentry
.WriteTo.Sentry(o => {
    o.Dsn = "<VOTRE_DSN>";
    o.MinimumBreadcrumbLevel = LogLevel.Debug;
})

Dépannage des Problèmes Courants

ProblèmeSolution
Logs absents dans SQL ServerVérifiez autoCreateSqlTable: true
RalentissementsUtilisez des sinks async comme Serilog.Sinks.Async
Propriétés manquantesAjoutez .Enrich.With()

Bonnes Pratiques pour la Production

  1. Privilégiez les sinks asynchrones pour les applications à fort trafic
  2. Protégez les données sensibles avec Destructure.ToMaximumDepth(3)
  3. Archivez les fichiers de logs avec Serilog.Sinks.File

Conclusion

Serilog transforme radicalement la gestion des logs dans ASP.NET Core. Grâce à ce guide, vous disposez désormais de tous les éléments pour implémenter une solution professionnelle.

Pour approfondir le sujet, consultez notre tutoriel sur OpenTelemetry pour les systèmes distribués.

Derniers articles

Publié dans .Net Core, Asp .Net, C Sharp, Log, Logging, SerilogTags:
© 2024 Tous les droits sont réservés.
oussamasaidi.com