2008-10-02 75 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。