我正在尝试写入Windows事件日志,但我有一个棘手的问题。
首先,我使用此处的步骤创建了NTEventAppender How to create NTEventlogAppender.dll as required for logging event in the eventlog using log4cplus
我将.dll放在System32文件夹中。当我在eclipse中构建并运行程序时,我收到了此错误
java.lang.UnsatisfiedLinkError: org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Ljava/lang/String;Ljava/lang/String;)I
at org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Native Method)
at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:79)
at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:49)
at mahle.eolx.ws.Main.<clinit>(Main.java:30)
Exception in thread "main"
我是否需要做一些不同的事情,因为这是一个Java应用程序,上面链接的问题是针对C ++应用程序。
如果是这种情况,我需要做什么。
编辑:我发现我应该使用log4j下载中包含的NTEventLogAppender.dll,但我仍然遇到同样的错误。答案 0 :(得分:1)
我无法使用它,但是我能够使用log4jna为NTEventLogAppender(https://github.com/dblock/log4jna)登录到事件查看器。
我采取了这些步骤
下载log4j并在项目http://logging.apache.org/log4j/1.2/download.html
中包含.jar文件下载log4jna,用于替换NTEventLogAppender并将必要的jar添加到项目中(log4jna,jna,platform)http://log4jna.codeplex.com/
您需要在应用程序目录中的某处添加Win32EventLogAppender.dll。
要让记录器记录有意义的消息,您需要更改注册表
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\"YourAppNameHere"]
"EventMessageFile"="C:\\Program Files\\"Your Application"\\Win32EventLogAppender.dll"
"CategoryMessageFile"="C:\\Program Files\\"Your Application"\\Win32EventLogAppender.dll"
"TypesSupported"=dword:00000007
"CategoryCount"=dword:00000006