2011-03-17 1 views
0

J'essaie d'utiliser NTEventLogAppender de Log4J pour consigner les messages de niveau ERROR dans le journal d'événements Windows «Application» pour une installation existante d'ActiveMQ 5.4.2 s'exécutant en tant que service sous Windows Server 2008, SP2 32bit (dans notre environnement de production, le logiciel de surveillance du serveur, Solar Windows, conserve les onglets sur les journaux d'événements Windows et agrège certaines informations qui y sont écrites). J'ai obtenu le "NTEventLogAppender.dll 32 bits" et l'ai copié dans c: \ windows \ system32. Je connais très bien Log4J mais pas l'appender NTEventLogAppender.Utilisation de Log4j NTEventLogAppender avec ActiveMQ en cours d'exécution sous Windows Server 2008

Si je démarre ActiveMQ dans une fenêtre de console (en cours d'exécution en tant que "Administrateur" ou non), tout va bien. Cependant, si je démarre ActiveMQ en tant que service (par exemple "net start activemq"), l'encapsuleur de service démarre mais ActiveMQ lui-même bombarde (en raison des appels dans Log4J à NTEventLogAppender). Commenter les lignes NTEventLogAppender applicables dans log4j.properties résout le problème.

Apparaît comme un problème d'autorisations Server 2008 pour ActiveMQ/NTEventLogAppender lorsqu'il s'exécute en tant que service au lieu d'une application de premier plan sous mes privilèges. Si les détails du problème sont enregistrés quelque part dans le système d'exploitation, je ne l'ai pas encore localisé. Btw, j'ai d'abord codé une petite application de console "hello world" juste pour voir si je pouvais même écrire dans le journal des événements en utilisant NTEventLogAppender sur cette machine. Pas un test parfait, mais cela a fonctionné, donc je sais que dans certaines circonstances, je peux faire fonctionner NTEventLogAppender (a couru l'application dans une console non-administrateur).

Pour ce qu'il vaut la peine, voici l'extrait applicable à partir log4j.properties:

log4j.appender.NTEVENT = org.apache.log4j.nt.NTEventLogAppender log4j.appender.NTEVENT.source = ActiveMQ log4j.appender.NTEVENT.layout = org.apache.log4j.PatternLayout log4j.appender.NTEVENT.layout.ConversionPattern =% d | % -5p | % m | % c | % T% n = log4j.appender.NTEVENT.threshold erreur

En outre, cette clé existe actuellement dans le Registre:

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Application \ ActiveMQ] " EventMessageFile "= C: \ Windows \ System32 \ NTEventLogAppender.dll "CategoryMessageFile"= C: \ Windows \ System32 \ NTEventLogAppender.dll "TypesSupported"= dword: 00000007 "CategoryCount"= dword: 00000006

Toutes les idées ?

Répondre

0

Je pense que cela est plus une question pour serverfault mais:

Votre ServiceAccount ont accès à écrire au journal des événements?

Questions connexes