log4Net EventlogAppender ne fonctionne pas pour Asp.Net 2.0 Site web?
J'ai configuré log4Net EventLogAppender pour Asp.Net 2.0. Cependant, il n'est pas enregistrer quoi que ce soit. J'ai de la suite dans mon Web.Config.
<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<param name="LogName" value="Test Log" />
<param name="ApplicationName" value="Test-Web" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<priority value="ERROR"/>
<appender-ref ref="EventLogAppender"/>
</root>
<logger name="NHibernate">
<level value="ERROR" />
<appender-ref ref="EventLogAppender" />
</logger>
</log4net>
J'ai déjà Test-Journal d'Événements le Journal créé et l'utilisateur AspNet dispose d'une autorisation sur le Journal des Événements entrée de registre. J'ai aussi log4Net configuré Mondiale.asax Application_Start.
log4net.Config.XmlConfigurator.Configure();
Mise à jour : je suis passé sur le log4net interne de débogage et a trouvé l'erreur suivante dans la trace.
log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [EventLogAppender] of type [log4net.Appender.EventLogAppender]. Reported error follows.
System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.
at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly)
at System.Diagnostics.EventLog.SourceExists(String source, String machineName)
at System.Diagnostics.EventLog.SourceExists(String source)
at log4net.Appender.EventLogAppender.ActivateOptions()
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
Mise à jour 2 : Il fonctionne enfin si j'ai créer la Source de l'Événement (Test-Web) à l'aide d'une console en fonction de l'application en c# et ensuite à l'aide de l'Application Web.
Avez-vous essayé de retourner sur log4net interne de débogage? C'est peut-être de lancer une erreur que vous ne serait pas normalement voir: logging.apache.org/log4net/release/faq.html
OriginalL'auteur Amitabh | 2010-04-06
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas vous dire exactement ce qui ne va pas, mais si vous allez ici, vous pourrez voir "Comment puis-je activer log4net interne de débogage?" chemin vers le bas au fond. Log4net ne va pas lancer des exceptions si quelque chose va mal, vous devez l'activer interne de débogage afin d'obtenir des informations à partir de log4net.
http://logging.apache.org/log4net/release/faq.html
Edit: voir Aussi la quesiton directement après celui-ci, qui explique le potentiel de décrochements avec l'aide de la EventLogAppender.
OriginalL'auteur AaronLS
Il y a quelques étapes très simples pour obtenir Log4Net de travail avec le journal des événements avec ASP.NET.
Vos options sont:
Modifier l'application de la piscine
Exécuter le pool d'applications LocalSystem
Ou...définir un nom d'application, ajouter une clé de registre
Configurer votre fichier de configuration avant de donc, il y a le nom d'une application.
Ceci est important si vous rencontrez un problème d'autorisations, parce que si vous par les pairs à la source vous verrez le EventLogAppender par défaut le nom de l'application (la source de la colonne dans le journal des événements):
Cela nécessite de votre application pour créer une clé de registre à chaque fois les changements de nom, et un peu en désordre. Donc, la meilleure solution est de configurer votre nom de l'application. Voici un exemple EventLogAppender section qui envoie chaque niveau d'erreur, le ApplicationName ligne est la partie importante:
Avant de faire ce changement, procédez de la manière suivante:
Créer une clé de registre
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP
Créer une chaîne de valeur à l'intérieur de ce
Nom il
EventMessageFile
, régler sa valeur àQue le chemin semble fonctionner à la fois 64 bits et 32 bits des environnements.
Avec cette technique, vous n'avez pas besoin de définir des autorisations dans le registre, et une fois que la clé est créée il devrait fonctionner.
OriginalL'auteur Chris S
Je soupçonne d'accès code de sécurité vous empêche d'accéder au journal des événements. Cet article avoir des informations sur le sujet. En fait, si votre ASP.Net l'application est en cours d'exécution en vertu d'un niveau de confiance moyen de l'application n'aura pas accès aux journaux d'événements.
Remarque: ce n'est pas une restriction construit en log4net en soi, c'est une "fonctionnalité" de la .Net Framework et ASP.Net.
OriginalL'auteur Peter Lillevold