Les premiers pas
Utilisation d'ElmahCore
Le ElmahCore est un ELMAH pour Net.Standard et .NET Core (3.1, 5, 6).
Ajouter le paquet NuGet elmahcore, avec une commande comme ceci en Visual Studio :
| Install-Package ElmahCore |
Utilisation simple
Dans le fichier «Startup.cs»
- services.AddElmah() dans ConfigureServices
- app.UseElmah(); dans Configure
app.UseElmah() doit être initialisé après l'initialisation d'autres intergiciels de gestion des exceptions, tels que UseExceptionHandler, UseDeveloperExceptionPage,...
Chemin elmah par défaut : ~/elmah.
Modifier le chemin de l'URL
- services.AddElmah(options => options.Path = "votre_chemin_ici")
Restreindre l'accès à l'URL d'Elmah
- services.AddElmah(options =>
- {
- options.OnPermissionCheck = context => context.User.Identity.IsAuthenticated;
- });
- services.AddElmah(options => options.Path = "votre_chemin_ici")
- services.AddElmah(options =>
- {
- options.OnPermissionCheck = context => context.User.Identity.IsAuthenticated;
- });
Remarque : app.UseElmah(); doit être après :
- app.UseAuthentication();
- app.UseAuthorization();
- app.UseElmah();
ou l'utilisateur sera redirigé vers l'écran de connexion même s'il est authentifié.
Modifier le type de journal d'erreurs
Vous pouvez créer votre propre journal d'erreurs, entreposant les erreurs où vous le souhaitez :
- class MyErrorLog: ErrorLog
- //implémenter ErrorLog
Les journaux d'erreurs sont disponibles dans le tableau :
| Classe | Description |
|---|---|
| MemoryErrorLog | Entrepose les erreurs en mémoire (par défaut) |
| XmlFileErrorLog | Entrepose les erreurs dans des fichiers XML. |
| SqlErrorLog | Entrepose les erreurs dans MS SQL (ajoute une référence à ElmahCore.Sql) |
| MysqlErrorLog | Entrepose les erreurs dans MySQL (ajoute une référence à ElmahCore.MySql) |
| PgsqlErrorLog | Entrepose les erreurs dans PostgreSQL (ajoute une référence à ElmahCore.Postgresql) |
Par les fichiers :
- services.AddElmah<XmlFileErrorLog>(options =>
- {
- options.LogPath = "~/log"; // OU options.LogPath = "c:\errors";
- });
Par la base de données :
- services.AddElmah<SqlErrorLog>(options =>
- {
- options.ConnectionString = "connection_string";
- options.SqlServerDatabaseSchemaName = "Errors"; //La valeur par défaut est dbo si elle n'est pas définie
- options.SqlServerDatabaseTableName = "ElmahError"; //La valeur par défaut est ELMAH_Error si elle n'est pas définie
- });
Lever une exception
Utilisation de UseElmahExceptionPage
Vous pouvez remplacer UseDeveloperExceptionPage par UseElmahExceptionPage :
- if (env.IsDevelopment())
- {
- //app.UseDeveloperExceptionPage();
- app.UseElmahExceptionPage();
- }
Utilisation des avertissements
Vous pouvez créer vos propres notifications en implémentant l'interface IErrorNotifier ou IErrorNotifierWithId et en ajoutant un avertissement aux options Elmah :
- services.AddElmah<XmlFileErrorLog>(options =>
- {
- options.Path = @"errors";
- options.LogPath = "~/logs";
- options.Notifiers.Add(new ErrorMailNotifier("Email",emailOptions));
- });
Chaque avertissement doit avoir un nom unique.
Utilisation des filtres
Vous pouvez utiliser la configuration du filtre XML Elmah dans un fichier séparé, créer et ajouter des filtres personnalisés :
- services.AddElmah<XmlFileErrorLog>(options =>
- {
- options.FiltersConfig = "elmah.xml";
- options.Filters.Add(new MyFilter());
- })
Le filtre personnalisé doit implémenter IErrorFilter. Exemple de configuration de filtre XML :
<?xml version="1.0" encoding="utf-8" ?>
<elmah>
<errorFilter>
<notifiers>
<notifier name="Email"/>
</notifiers>
<test>
<and>
<greater binding="HttpStatusCode" value="399" type="Int32" />
<lesser binding="HttpStatusCode" value="500" type="Int32" />
</and>
</test>
</errorFilter>
</elmah>