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ème | Solution |
---|---|
Logs absents dans SQL Server | Vérifiez autoCreateSqlTable: true |
Ralentissements | Utilisez des sinks async comme Serilog.Sinks.Async |
Propriétés manquantes | Ajoutez .Enrich.With() |
Bonnes Pratiques pour la Production
- Privilégiez les sinks asynchrones pour les applications à fort trafic
- Protégez les données sensibles avec
Destructure.ToMaximumDepth(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
- Hangfire avec ASP.NET Core
- Premiers pas avec AutoMapper dans ASP.NET Core
- Serilog dans ASP.NET Core 3.1-La journalisation structurée simplifiée
Vous aimez le contenu ?
Si vous aimez mes articles, pensez à m’acheter quelques cafés !