Search code examples
javalogginglog4jevent-log

NTEventLogAppender is not working for my Java Application


I'm trying to write to the Windows Event Log and I have a nagging issue.

First I created the NTEventAppender using steps found here.
How to create NTEventlogAppender.dll as required for logging event in the eventlog using log4cplus

I placed the .dll in the System32 folder. When I built and ran the program in eclipse I received this error

java.lang.UnsatisfiedLinkError: org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Ljava/lang/String;Ljava/lang/String;)I
    at org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Native Method)
    at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:79)
    at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:49)
    at mahle.eolx.ws.Main.<clinit>(Main.java:30)
Exception in thread "main" 

Do I need to do something differently since this is a Java application and the question linked above was for a C++ Application.

And if that is the case, what do I need to do.

EDIT: I found out that I should be using the NTEventLogAppender.dll that was included with the log4j download, but I'm still getting the same error.


Solution

  • I couldn't get this to work, however I was able to log to the event viewer by using log4jna for the NTEventLogAppender (https://github.com/dblock/log4jna).

    I took these steps

    Download log4j and include the .jar file in your project http://logging.apache.org/log4j/1.2/download.html

    Download log4jna which is used to replace the NTEventLogAppender and add the necessary jars to your project (log4jna, jna, platform) http://log4jna.codeplex.com/

    You will need to add the Win32EventLogAppender.dll somewhere in your application directory.

    To get the logger to log meaningful messages you will need to change the registry

     Windows Registry Editor Version 5.00
    
     [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\"YourAppNameHere"]
     "EventMessageFile"="C:\\Program Files\\"Your Application"\\Win32EventLogAppender.dll"
     "CategoryMessageFile"="C:\\Program Files\\"Your Application"\\Win32EventLogAppender.dll"
     "TypesSupported"=dword:00000007
     "CategoryCount"=dword:00000006