java - NTEventLogAppender 不适用于我的 Java 应用程序

标签 java logging log4j event-log

我正在尝试写入 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,但我仍然遇到相同的错误。

最佳答案

我无法让它工作,但是我能够通过使用 NTEventLogAppender 的 log4jna (https://github.com/dblock/log4jna) 登录到事件查看器。

我采取了这些步骤

下载 log4j 并将 .jar 文件包含在您的项目中 http://logging.apache.org/log4j/1.2/download.html

下载 log4jna,它用于替换 NTEventLogAppender 并将必要的 jar 添加到您的项目(log4jna、jna、平台)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

关于java - NTEventLogAppender 不适用于我的 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049434/

相关文章:

java - 原始 Java 的默认类型

java - 类型不匹配 : cannot convert from integer to boolean

apache - 轮换 Apache 日志文件的最佳方法

java - logging.level.root 不起作用(spring Boot)

java - 用于添加文件名和行号的 Log4j 配置

java - 我应该如何在 Java 中复制字符串?

java - Lifefay freemarker ADT : methods unavailable?

java - Hazelcast:用于在 Debug模式下登录的编程配置

grails - 在一个servlet容器中部署的Grails应用程序的不同日志文件

logging - VBScript 是否有等效的 log4j?