Comment configurer Microsoft Enterprise Library enregistrement Bloc d'Application pour gérer toute catégorie de l'enregistrement?
Je suis en train d'utiliser le Commune de l'Infrastructure des Bibliothèques .NET (Communs.L'exploitation forestière) avec Bibliothèque d'Entreprise 4.1 de l'Application d'enregistrement de Bloc. Selon le docs, c'est pris en charge.
Le problème que je rencontre est que lorsque j'essaie de me connecter quelque chose, comme (dans cet exemple, je suis dans un ASP.NET application MVC):
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
ILog log = LogManager.GetCurrentClassLogger();
log.Info("Hello world!");
return View();
}
Au lieu d'obtenir le message de log, j'obtiens une erreur dans mon journal des événements:
Message: Il n'y a pas de mappage explicite pour les catégories " TestApp.Les contrôleurs.HomeController'.
Bien, il ne semble pas être une option en Commun.La journalisation pour définir la catégorie par défaut, et je ne peux pas comprendre comment configurer le LoggingConfiguration à accepter n'importe quelle catégorie, même si elle n'est pas définie.
Voici un extrait de mon LoggingConfiguration:
<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
...
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Formatted EventLog TraceListener" />
<add name="Email TraceListener" />
</listeners>
</add>
</categorySources>
<specialSources>
<allEvents switchValue="All" name="All Events" />
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Formatted EventLog TraceListener" />
</listeners>
</errors>
</specialSources>
</loggingConfiguration>
J'ai essayé de réglage logWarningsWhenNoCategoriesMatch
pour de faux, mais des silences de l'avertissement, il ne faut pas faire de la journalisation de travail.
J'ai aussi essayé de se débarrasser de la <notProcessed switchValue="All" .../>
particulier à la source, mais qui ne semble pas avoir d'effet.
Ce que quelqu'un sait si il existe un moyen d'obtenir que cela fonctionne? Merci!
OriginalL'auteur Pandincus | 2011-03-20
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez
LogManager.GetCurrentClassLogger()
Commun.La journalisation va utiliser le type de l'appel de la classe dans la catégorie:Si vous souhaitez utiliser cette approche (même si la recommandation est de ne pas utiliser cette méthode trop depuis qu'il inspecte la structure de pile) alors, oui, vous aurez besoin de créer une catégorie pour chaque classe que vous vous connectez à partir d'. Cela permettrait de recréer une sorte d'hiérarchique enregistreurs sont utilisés dans Log4Net. Mais cette approche n'est pas idéale, car il n'est pas facile à gérer.
Vous devriez être en mesure de contourner ce problème en utilisant la
LogManager.GetLogger(string name)
surcharge au lieu deGetCurrentClassLogger
. On dirait le nom est passé en sera utilisé comme catégorie pour l'enregistrement dans la Bibliothèque d'Entreprise. Ainsi, vous pouvez définir le nom de catégorie comme une constante et le passer dans laGetLogger
méthode et ont la totalité de votre utilisation de l'application d'une Bibliothèque d'Entreprise de la catégorie.GetLogger
serait de travailler de cette façon-ma hypothèse (oh pinaise) était queGetLogger
serait de retour d'un enregistreur correspondant au type, comme une sorte de ServiceLocator modèle. Maintenant, le nommage plus de sens pour moi. Merci!!!!!!Il y a un GetLogger surcharge qui prend un Type qui est probablement ce que vous pensiez de la.
OriginalL'auteur Randy Levy
Le "notProcessed spéciale" de source récupère toutes les entrées qui ne correspondent pas à une catégorie de source - donc vous pouvez l'utiliser pour les attraper. Il n'y a plus d'informations ici: https://entlib.codeplex.com/discussions/215189
OriginalL'auteur guest