如何从Java写入Windows事件日志?

时间:2020-03-06 15:03:13  来源:igfitidea点击:

如何从Java写入Windows事件日志?

解决方案

Log4J是基于Java的日志记录实用程序。 NTEventLogAppender类可用于"添加到NT事件日志系统"。请参阅此处的文档:

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/nt/NTEventLogAppender.html

编辑:有一个较新的版本Log4j 2"对该版本进行了重大改进"。

早在2001年,JavaWorld就如何将消息写入Windows NT事件日志发布了一篇文章。或者,我们可以看一下Log4j NTEventLogAppender类。

我们还可以在Windows XP Pro及更高版本上使用eventcreate命令。

String command = "eventcreate "
               + " /l APPLICATION"
               + " /so \"" + applicationObjectName + "\""
               + " /t " + lvl
               + " /id " + id
               + " /d \"" + description + "\"";

Runtime.getRuntime().exec(command);

对于XP或者更低版本的XP,我们可以创建一个使用wscript.shell.eventcreate方法编写的vbs应用程序。但是,我们牺牲了指定来源的能力。

例子:
http://www.ozzu.com/mswindows-forum/posting-event-log-with-batch-files-t76791.html

我们可以使用JNA直接写入事件日志,而无需任何本机DLL。请参阅Advapi32和Advapi32Util类,以获取各种事件日志方法(自JNA 3.2.8起提供)。

如果我们使用的是Log4j,请考虑使用Log4jna而不是NTEventLogAppender。