tags:

views:

2785

answers:

4

Can you recommend what I should be using to do that?

+14  A: 

Log4J with this

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

Lou Franco
Log4J is a good choice because your code doesn't get coupled to the underlying logging target and its easily configured through XML.
bmatthews68
+4  A: 

Back in 2001 JavaWorld published an article on how to write messages to the Windows NT Event Log. Or, you can take a look at the Log4j NTEventLogAppender class.

TomC
+1  A: 

You can also use the eventcreate command on Windows XP Pro and above.

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

Runtime.getRuntime().exec(command);

For XP home and lower, you could create a vbs application that writes using the wscript.shell.eventcreate method. However you sacrifice the ability to specify source.

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

Andrew
+1  A: 

You can use JNA to write to the Event Log directly without the need of any native DLLs. See Advapi32 and Advapi32Util classes for various event log methods (ships since JNA 3.2.8).

If you're using Log4j, consider Log4jna instead of NTEventLogAppender.

dblock