Использование Log4j NTEventLogAppender с ActiveMQ, работающим как служба под Windows Server 2008

Я пытаюсь использовать NTEventLogAppender Log4J для регистрации сообщений уровня ERROR в журнале событий Windows «Application» для существующей установки ActiveMQ 5.4.2, работающей как служба на Windows Server 2008, SP2 32bit (в нашей производственной среде программное обеспечение для мониторинга серверов , Solar Windows, хранит вкладки в журналах событий Windows и собирает определенную информацию, записанную в них). Я получил 32-битный NTEventLogAppender.dll и скопировал его в c: \ windows \ system32.

Я хорошо знаком с Log4J, но не с приложением NTEventLogAppender.

Если я запускаю ActiveMQ в окне консоли (работая как «Администратор» или нет), все в порядке. Однако, если я запускаю ActiveMQ как службу (например, «net start activemq»), оболочка службы запускается, но сам ActiveMQ срывается (из-за вызовов NTEventLogAppender в Log4J). Комментирование соответствующих строк NTEventLogAppender в log4j.properties решает проблему.

Похоже на проблему с разрешениями Server 2008 для ActiveMQ / NTEventLogAppender, когда он работает как служба, а не как приложение переднего плана с моими привилегиями. Если где-то в ОС записана информация о проблеме, я еще не нашел ее.

Кстати, я изначально написал небольшое консольное приложение «hello world», чтобы посмотреть, могу ли я вообще записывать в журнал событий с помощью NTEventLogAppender на этой машине. Не идеальный тест, но он сработал, поэтому я знаю, что при определенных обстоятельствах я могу заставить NTEventLogAppender работать (запускать приложение в консоли без прав администратора).

Вот подходящий фрагмент из 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.layattern.Connect d | % -5p | % m | % c | % t% n log4j.appender.NTEVENT.threshold = ОШИБКА

Кроме того, этот ключ в настоящее время существует в реестре:

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

Любые идеи?


person Bruce Loth    schedule 17.03.2011    source источник


Ответы (1)


Я думаю, что это скорее вопрос о сбое сервера, но:

есть ли у вашего serviceaccount доступ для записи в журнал событий?

person Noctris    schedule 22.03.2011