2008-10-02 111 views

回答

23

Log4J是一个基于Java的日志记录工具。类NTEventLogAppender可用于“附加到NT事件日志系统”。在这里看到的文档:

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

编辑:“它提供超过其前任显著改善”有一个新的版本,Log4j 2

+0

Log4J是一个不错的选择,因为您的代码没有耦合到底层日志记录目标,并且通过XML轻松配置。 – 2008-10-02 22:52:10

+1

NTEventLogAppender的一个大问题是,它需要将本地DLL放在你不想要的所有类型的地方。 – 2013-02-25 01:19:31

4

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

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

Runtime.getRuntime().exec(command); 

对于XP home及更低版本,您可以创建一个使用wscript.shell.eventcreate方法写入的vbs应用程序。但是你牺牲了指定源代码的能力。

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

+0

如何定义applicationObjectName,lvl等 – ChanGan 2015-04-06 06:34:19

7

您可以使用JNA直接写入到事件日志,而不需要任何本地的DLL。查看Advapi32和Advapi32Util类的各种事件日志方法(自JNA 3.2.8以来发布)。

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