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

如何从Java写入Windows事件日志?,java,windows,logging,event-log,Java,Windows,Logging,Event Log,如何从Java写入Windows事件日志?Log4J是一个基于Java的日志实用程序。类NTEventLogAppender可用于“附加到NT事件日志系统”。请参阅此处的文档: 编辑:有一个较新的版本,“它比以前的版本提供了显著的改进。”早在2001年,JavaWorld就发表了一篇关于如何使用Log4j类的文章,或者,您可以看看Log4j类。您也可以在Windows XP Pro及更高版本上使用eventcreate命令 String command = "eventcreate "

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

Log4J是一个基于Java的日志实用程序。类
NTEventLogAppender
可用于“附加到NT事件日志系统”。请参阅此处的文档:


编辑:有一个较新的版本,“它比以前的版本提供了显著的改进。”

早在2001年,JavaWorld就发表了一篇关于如何使用Log4j类的文章,或者,您可以看看Log4j类。

您也可以在Windows XP Pro及更高版本上使用eventcreate命令

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

Runtime.getRuntime().exec(command);
对于XP home和更低版本,您可以创建一个vbs应用程序,该应用程序使用wscript.shell.eventcreate方法进行写入。但是,您牺牲了指定源的能力

例如:

您可以使用直接写入事件日志,而无需任何本机DLL。请参阅Advapi32和Advapi32Util类,了解各种事件日志方法(自JNA 3.2.8发布以来)


如果您使用的是Log4j,考虑NtVunLogAppEnter。< /P> Log4J是一个不错的选择,因为您的代码没有耦合到底层日志对象,并且它容易通过XML配置。NTEventLogAppender的最大问题是它需要一个本地DLL放置在您不希望的所有地方。Log4jNA已经被移动到,如果上面的链接停止工作。如何定义applicationObjectName、lvl等