Supposons que, pour des raisons d'argumentation, j'ai 30 applications Web asp.net (et sites, blerg) qui nécessitent un cadre de journalisation. Ma solution actuelle consiste à utiliser Enterprise Library Logging. Obtenir ce cours sur un site comprend les étapes suivantes:aidez-moi à trouver une solution de journalisation à friction minimale pour les applications asp.net
- ajouter des références à deux ensembles (Logging EL et communes)
- ajouter du code à Global.asax.cs d'erreur générique piégeage non gérée
- copie enterpriseLibrary .config, copié à partir d'une autre application qui a déjà la connexion copie
- dans FileConfigurationSource.cs (ce qui vous permet de passer outre l'exigence d'un chemin hardcoded au enterpriseLibrary.config)
- espace de noms de changement de FileConfigurationSource.cs au nouveau projet
- copie sections web.config d'un autre projet qui sont spécifiques à EL (2 sections)
- des espaces de noms de changement dans web.config pour EL dans le nouveau projet de test
- et assurez-vous qu'il fonctionne (habituellement en prenant la base de données en ligne
Tout cela est la friction dont je parle. C'est beaucoup de violations de DRY si vous me demandez, en particulier dans tous les paramètres enterpriseLibrary.config. Idéalement, l'ajout de la notation serait un processus en deux étapes - cela m'aidera à l'adopter dans toute l'équipe.
Je me demande s'il existe une solution de journalisation pour .net que n'a pas toutes ces répétitions? Tous ceux que je peux trouver (log4net, nlog, EL Logging) semblent utiliser ce modèle "chaque application a sa propre configuration avec beaucoup de répétition". Peut-être qu'il me manque quelque chose.
En pratique, chacune de nos applications aura une solution de journalisation identique à 99% aux autres. Ils différeront dans l'endroit où ils stockent leurs journaux et ce que l'application est appelée. Existe-t-il un moyen d'utiliser l'une des trois grandes solutions de journalisation qui vous permettent de définir le comportement de journalisation au niveau de la machine ou dans un endroit plus centralisé? Je réalise qu'il y a des inconvénients à avoir une configuration de journalisation centralisée.
Il est également important: doit être en mesure de modifier le niveau de journalisation à la volée (pas de stockage config d'enregistrement dans web.config, ce qui provoque un redémarrage de l'application) et l'enregistrement doit être configurable dans le cadre d'un déploiement (ne veulent pas un email à envoyer sur les erreurs critiques sur le serveur bêta). Ces deux rendent difficile l'utilisation de web.config transforme depuis l'exécution d'une transformation sur un .config dans le cadre de votre build qui n'est pas un web.config est difficile.
L'inclusion d'autres fichiers journaux est une fonctionnalité intéressante. Je vais y jeter un coup d'oeil et voir si je peux implémenter une sorte de configuration de journalisation "au niveau de la machine". – jcollum
@jcollum: c'est bien joli, vous pouvez aussi utiliser des variables dans les noms de fichiers ce qui ajoute de la flexibilité. –
@jcollum: J'ai mis à jour la réponse avec quelques précisions. J'espère que vous le trouverez utile. –