Introduction à Serilog : qu'est-ce que c'est et pourquoi l'utiliser
\n\nSerilog est une bibliothèque puissante, flexible et moderne pour la journalisation structurée dans l'écosystème .NET (C#, F#, VB.NET). Contrairement aux frameworks de journalisation classiques (comme NLog ou log4net), qui fonctionnent avec des messages textuels plats, Serilog est conçu dès le départ pour travailler avec des données structurées.
\n\nPourquoi utiliser Serilog ?
\n- \n
- Journalisation structurée : Vous ne journalisez pas simplement une chaîne, mais des objets avec des propriétés nommées. Cela permet de filtrer, rechercher et analyser efficacement les logs dans des systèmes comme Elasticsearch, Seq, Datadog. \n
- Flexibilité (Sinks) : Serilog utilise le concept de "récepteurs" (sinks). Vous pouvez envoyer les logs vers la console, un fichier, une base de données, des services cloud (Azure, AWS), Elasticsearch, Telegram, Slack et des centaines d'autres endroits — en installant simplement le package approprié. \n
- Performance : Serilog est optimisé pour les applications à forte charge. Il utilise le formatage différé des chaînes (message templates) pour éviter les allocations mémoire inutiles si le niveau de journalisation n'est pas actif. \n
- Simplicité de configuration : Configuration via code ou fichier JSON. Le code minimal pour commencer — seulement quelques lignes. \n
- Diagnostic : Permet d'ajouter facilement des informations contextuelles (par exemple, ID utilisateur, numéro de commande, nom de méthode) à chaque log. \n
Installation de Serilog
\n\nSerilog est distribué via NuGet — le gestionnaire de packages pour .NET. L'installation se fait via la console du gestionnaire de packages (Package Manager Console) ou .NET CLI.
\n\nInstallation via .NET CLI (recommandée) :
\ndotnet add package Serilog\ndotnet add package Serilog.Sinks.Console\ndotnet add package Serilog.Sinks.File\ndotnet add package Serilog.Settings.Configuration\ndotnet add package Serilog.AspNetCore\n\nInstallation via Package Manager Console (Visual Studio) :
\nInstall-Package Serilog\nInstall-Package Serilog.Sinks.Console\nInstall-Package Serilog.Sinks.File\nInstall-Package Serilog.Settings.Configuration\nInstall-Package Serilog.AspNetCore\n\nExplication des packages :
\n- \n
- Serilog — le cœur de la bibliothèque. \n
- Serilog.Sinks.Console — récepteur pour la sortie console. \n
- Serilog.Sinks.File — récepteur pour l'écriture dans des fichiers. \n
- Serilog.Settings.Configuration — permet de lire les paramètres depuis
appsettings.json. \n - Serilog.AspNetCore — intégration avec ASP.NET Core (ajoute le contexte HTTP aux logs). \n
Note pour les lecteurs de PythonLib : En Python, l'équivalent de l'installation via pip est pip install serilog (mais Serilog est une bibliothèque .NET, pour Python il existe ses propres outils, par exemple, structlog).
Démarrage rapide : premier log en 30 secondes
\n\nCréez une application console .NET et ajoutez le code suivant dans Program.cs :
using Serilog;\n\n// 1. Configuration de Serilog\nLog.Logger = new LoggerConfiguration()\n .MinimumLevel.Debug()\n .WriteTo.Console()\n .WriteTo.File("logs/myapp.log", rollingInterval: RollingInterval.Day)\n .CreateLogger();\n\ntry\n{\n Log.Information("Application démarrée avec succès.");\n\n int userId = 42;\n string userName = "Alice";\n Log.Information("L'utilisateur {UserId} nommé {UserName} s'est connecté.", userId, userName);\n\n // Exemple avec erreur\n try\n {\n throw new InvalidOperationException("Opération invalide");\n }\n catch (Exception ex)\n {\n Log.Error(ex, "Une erreur s'est produite lors de l'exécution de l'opération pour l'utilisateur {UserId}", userId);\n }\n\n Log.Warning("Ceci est un avertissement. Niveau : {Leve Aussi dans la bibliothèque
Rate limiting en C++ : bibliothèques et outils pour contrôler les requêtes
Doctrine ORM pour PHP : guide complet avec exemples
Envoi de SMS en C# (.NET) : Intégration avec l'API des services SMS via HttpClient
Mockery pour Go : guide complet avec exemples
Travailler avec CSV en Swift (iOS/macOS) : bibliothèques et exemples