Использование Log4j NTEventLogAppender с ActiveMQ, работающим в качестве службы в Windows Server 2008 - PullRequest
0 голосов
/ 17 марта 2011

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

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

Если я запускаюActiveMQ в консольном окне (либо работает как «Администратор», либо нет), все хорошо.Однако, если я запускаю ActiveMQ как службу (например, «net start activemq»), оболочка службы запускается, но сам ActiveMQ бомбит (из-за вызовов в Log4J к NTEventLogAppender).Комментирование применимых строк 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.layout.ConversionPattern =% 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 "TypesSupported" = dword: 00000007 "CategoryCount" = dword: 00000006

Любойидеи?

1 Ответ

0 голосов
/ 22 марта 2011

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

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

...