在Windows Server 2008下使用Log4j NTEventLogAppender和作为服务运行的ActiveMQ

在Windows Server 2008下使用Log4j NTEventLogAppender和作为服务运行的ActiveMQ,log4j,windows-server-2008,activemq,Log4j,Windows Server 2008,Activemq,我正在尝试使用Log4J的NTEventLogAppender将错误级别消息记录到Windows“应用程序”事件日志中,该日志用于现有的ActiveMQ 5.4.2安装,在Windows Server 2008上作为服务运行,SP2 32位(在我们的生产环境中,服务器监控软件Solar Windows会跟踪Windows事件日志并聚合写入其中的某些信息)。我获得了32位的“NTEventLogAppender.dll”,并将其复制到c:\Windows\system32 我非常熟悉Log4J,但

我正在尝试使用Log4J的NTEventLogAppender将错误级别消息记录到Windows“应用程序”事件日志中,该日志用于现有的ActiveMQ 5.4.2安装,在Windows Server 2008上作为服务运行,SP2 32位(在我们的生产环境中,服务器监控软件Solar Windows会跟踪Windows事件日志并聚合写入其中的某些信息)。我获得了32位的“NTEventLogAppender.dll”,并将其复制到c:\Windows\system32

我非常熟悉Log4J,但不熟悉NTEventLogAppender appender

如果我在控制台窗口中启动ActiveMQ(无论是否以“管理员”身份运行),一切正常。但是,如果我将ActiveMQ作为服务启动(例如“net start ActiveMQ”),服务包装器将启动,但ActiveMQ本身会爆炸(由于Log4J中对NTEventLogAppender的调用).注释掉log4j中适用的NTEventLogAppender行。属性解决了该问题

当ActiveMQ/Nteventlogender在我的权限下作为服务而不是前台应用程序运行时,似乎出现了Server 2008权限问题。如果操作系统中记录了该问题的详细信息,我尚未找到它

顺便说一句,我最初确实编写了一个小的“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.patternalyout log4j.appender.NTEVENT.layout.ConversionPattern=%d |%-5p |%m |%c |%t%n log4j.appender.NTEVENT.threshold=错误

此外,注册表中当前不存在此项:

[HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\ActiveMQ] “EventMessageFile”=C:\Windows\System32\nEventLogAppender.dll “CategoryMessageFile”=C:\Windows\System32\nEventLogAppender.dll “TypesSupported”=dword:0000000 7 “类别计数”=dword:00000006


有什么想法吗?

我想这更像是服务器故障的问题,但是:

您的serviceaccount是否具有写入事件日志的权限