Section courante

A propos

Section administrative du site

Implémentations du journal des erreurs et conseils pour le choix

ELMAH est livré avec sept implémentations de journaux d'erreurs, répertoriées par ordre alphabétique dans le tableau suivant, ainsi que leur compatibilité et la disponibilité des versions de .NET Framework :

Implémentation Description Confiance moyenne 1.0 1.1 2.0 3.5
AccessErrorLog Enregistre les erreurs dans un fichier de base de données Microsoft Access Non Oui Oui Oui Oui
MemoryErrorLog Enregistre les erreurs dans la mémoire (volatile) Oui Oui Oui Oui Oui
OracleErrorLog Enregistre les erreurs dans une base de données Oracle Non Non Oui Oui Oui
SqlErrorLog Enregistre les erreurs dans une base de données Microsoft SQL Server Oui Oui Oui Oui Oui
SQLiteErrorLog Enregistre les erreurs dans un fichier de base de données SQLite Non Non Oui Oui Oui
VistaDBErrorLog Enregistre les erreurs dans un fichier de base de données VistaDB (Express Edition) Oui Non Non Oui Oui
XmlFileErrorLog Enregistre les erreurs dans un répertoire sous forme de fichiers XML libres. Oui Oui Oui Oui Oui

XmlFileErrorLog sous une confiance moyenne

Le fournisseur XmlFileErrorLog fonctionne avec un niveau de confiance moyen tant qu'il est configuré pour entreposer les fichiers d'erreurs XML dans un dossier à la racine de l'application Web. En effet, ce niveau de confiance moyen n'autorise l'accès au système de fichiers qu'au répertoire de l'application et à ses sous-dossiers.

Choisir votre arme

Les fournisseurs listés ci-dessus peuvent être classés en trois catégories distinctes, ce qui devrait faciliter votre choix.

Fournisseurs simples

Vous avez le choix entre deux fournisseurs simples :

MemoryErrorLog

Le MemoryErrorLog, comme son nom l'indique, entrepose les erreurs en mémoire. Cet entreposage est rapide et adapté tant qu'elles ne survivent pas aux redémarrages de l'application. Les réinitialisations d'applications étant souvent imprévisibles, ce fournisseur de journaux est généralement utilisé uniquement à des fins de test et de dépannage. En cas de problème, il est conseillé de supprimer les dépendances aux services externes, et le MemoryErrorLog peut contribuer à réduire le nombre de pièces mobiles. Par défaut, le MemoryErrorLog ne stocke que les 15 dernières erreurs et peut être configuré pour en conserver un maximum de 500.

XmlErrorLog

XmlFileErrorLog entrepose les erreurs dans des fichiers XML libres, dans un répertoire configurable. Chaque erreur dispose de son propre fichier contenant tous ses détails. Les fichiers peuvent être facilement copiés, supprimés, compressés ou envoyés par courrier électronique pour un diagnostic plus approfondi. Contrairement à SQL Server et Oracle, il ne nécessite aucun moteur de base de données ni aucune configuration. La gestion est donc très réduite et vous n'avez pas à vous soucier des coûts supplémentaires liés à l'hébergement. Bien que simple, il s'appuie sur les performances du système de fichiers pour parcourir le répertoire, lire les fichiers et les trier. Pour garantir le bon fonctionnement des journaux basés sur XmlFileErrorLog, limitez le nombre de fichiers en planifiant une tâche d'archivage périodique des anciens journaux et de nettoyage du dossier.

Moteurs de bases de données de bureau

Dans cette catégorie, vous avez le choix entre trois fournisseurs :

Quel que soit votre choix, ces fournisseurs créent automatiquement le fichier de base de données sous-jacent, éliminant ainsi toute configuration préalable. Chacun crée un seul fichier sur disque, ce qui permet de gérer toutes les erreurs d'une application (archivage, compression, envoi par courrier électronique, entreposage sur clef USB,...) comme une seule unité.

AccessErrorLog

Comme on peut s'y attendre, AccessErrorLog utilise Microsoft Access comme moteur de base de données. Parmi les trois fournisseurs de cette catégorie, c'est le seul à être compatible avec ASP.NET 1.x, ce qui en fait un excellent choix pour les applications héritées. Faisant partie de la suite Microsoft Office, il sera également familier à de nombreux développeurs Windows. L'un des principaux avantages d'AccessErrorLog est la possibilité d'ouvrir la MDB dans Microsoft Access pour des analyses ou des rapports plus approfondis.

SQLiteErrorLog

SQLite est un moteur de base de données relationnelle public, léger et intégrable. SQLiteErrorLog utilise System.Data.SQLite, un fournisseur ADO.NET open source pour le moteur de base de données SQLite. L'entreposage SQLite est un bon choix en termes de rapidité et de coût, car il est réputé pour sa grande rapidité et ne nécessite aucun service supplémentaire de la part d'une équipe d'exploitation ou d'un hébergeur d'applications Web. Sa principale limite est qu'il nécessite une confiance totale pour fonctionner.

VistaDBErrorLog

Le journal VistaDBErrorLog utilise VistaDB.Net Express Edition comme base de données. VistaDB est un moteur de base de données entièrement géré et gratuit pour une utilisation non commerciale. Ce moteur, entièrement géré et exempt d'appels non gérés, non sécurisés et non vérifiables, peut fonctionner dans des environnements de confiance moyenne et est donc idéal pour les scénarios d'hébergement mutualisé.

Bases de données relationnelles d'entreprise

En haut de gamme, il n'existe que deux options pour votre persistance, mais elles constituent toutes deux d'excellentes options :

SqlErrorLog

SqlErrorLog est compatible avec Microsoft SQL Server 2000 et versions ultérieures. Ce journal d'erreurs présente plusieurs avantages. Il fonctionne avec toutes les versions de .NET Framework (1.0 à 3.5) ; il est géré avec un niveau de confiance moyen et peut évoluer pour prendre en charge plusieurs applications dans une même base de données.

Bien qu'aucun autre journal d'erreurs ne soit comparable à celui-ci, il présente un inconvénient : il nécessite une configuration manuelle, comme la création d'une base de données et l'exécution d'un script pour créer des tables et des STORED PROCEDURE.

Dernier point à noter : les scripts SQL fournis avec SqlErrorLog utilisent le type de données ntext. Bien que ce type de données soit obsolète avec SQL Server 2005, il reste entièrement pris en charge (Microsoft recommande d'utiliser nvarchar(max) à la place). Afin de maintenir la rétrocompatibilité avec les déploiements existants, SqlErrorLog continue d'utiliser ntext, une décision de conception étant sans doute revue à mesure qu'ELMAH évolue et que la technologie évolue rapidement.

OracleErrorLog

OracleErrorLog offre les mêmes fonctionnalités que SqlErrorLog, mais requiert une confiance totale et est pris en charge par .NET Framework 1.1 ou version ultérieure. Cette implémentation est compatible avec Oracle 8i (à partir de la version 8.1.7), Oracle 9i et Oracle 10g. Tout porte à croire qu'elle fonctionnera également parfaitement avec Oracle 11g, car aucun problème de compatibilité connu n'affecterait ELMAH, bien qu'elle n'ait pas encore été testée avec cette version de la base de données.

Avantages communs

Quand Microsoft SQL Server ou Oracle sont disponibles, ils représentent le meilleur choix, quelle que soit la taille et la complexité des applications. Vitesse, performance, résilience des données et bien d'autres caractéristiques sont intrinsèques aux moteurs de bases de données relationnelles. De plus, en tant que fournisseurs de journalisation des erreurs sur serveur, ils permettent tous deux d'entreposer les exceptions provenant de différentes applications. Ainsi, plusieurs applications peuvent pointer vers la même base de données et ELMAH peut entreposer leurs exceptions de manière à ce que chaque application ne voie et ne soit notifiée que de ses propres exceptions. Pour ce faire, le nom unique de chaque application est enregistré dans un champ de la table où ELMAH consigne les erreurs, puis filtre sur ce même champ à chaque requête.

Cela est particulièrement utile lorsqu'un hébergeur ou un environnement d'exploitation d'entreprise souhaite fournir un mécanisme centralisé de journalisation des erreurs prêt à l'emploi, sans gaspiller trop de ressources serveur et sans que chaque utilisateur ait sa propre base de données. Une chaîne de connexion publique pointant vers une base de données à laquelle chaque utilisateur peut se connecter uniquement pour la journalisation des erreurs est alors disponible.

En fin de compte, le choix dépendra probablement des normes de l'entreprise et/ou des ressources disponibles. Les deux options nécessitent des compétences d'administrateur de base de données (DBA) pour être opérationnelles, même si le fournisseur SqlErrorLog sera probablement beaucoup plus répandu compte tenu des avantages déjà mentionnés.

Coûts des licences de bases de données

L'un des principaux arguments contre l'utilisation de bases de données d'entreprise est le coût. Si les frais de licence pour SQL Server et Oracle peuvent être prohibitifs pour la plupart des utilisateurs, il convient de souligner que SQL Server et Oracle sont tous deux disponibles en éditions Express gratuites. Leur utilisation présente quelques limitations, mais elles sont largement suffisantes pour ELMAH. SQL Server Express Edition et OracleXE méritent d'être étudiés si vous souhaitez une base de données d'entreprise sans les coûts habituels.



Dernière mise à jour : Mercredi, le 23 novembre 2022