Title: Multiple Servlets and NTEventLogAppender

I'm having a problem using the NTEventLogAppender in log4j 1.0.4 with Tomcat 3.2 and two different web applications.  I have both web applications loading the same XML configuration file found in %TOMCAT_HOME%\conf\log4j-config.xml.  When the second web app loads, I see the following exception:

java.lang.UnsatisfiedLinkError: Native Library C:\WINNT\NTEventLogAppender.dll already loaded in another classloader
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1346)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1306)
        at java.lang.Runtime.loadLibrary0(Runtime.java:749)
        at java.lang.System.loadLibrary(System.java:820)
        at org.apache.log4j.nt.NTEventLogAppender.<clinit>(NTEventLogAppender.java:120)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:120)
        at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:144)
        at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:129)
        at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfCategoryElement(DOMConfigurator.java:352)
        at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:310)
        at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:636)
        at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:567)
        at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:513)
        at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:582)
        at com.itxc.sdialer.ServerDialer.<init>(ServerDialer.java:155)
        at java.lang.Class.newInstance0(Native Method)
        at java.lang.Class.newInstance(Class.java:237)
        at org.apache.tomcat.core.ServletWrapper.loadServlet(ServletWrapper.java:268)
        at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:289)
        at org.apache.tomcat.context.LoadOnStartupInterceptor.contextInit(LoadOnStartupInterceptor.java:130)
        at org.apache.tomcat.core.ContextManager.initContext(ContextManager.java:491)
        at org.apache.tomcat.core.ContextManager.init(ContextManager.java:453)
        at org.apache.tomcat.startup.Tomcat.execute(Tomcat.java:195)
        at org.apache.tomcat.startup.Tomcat.main(Tomcat.java:235)

Here are the pertinent lines from my log4j-config.xml file:

  ...

  <appender name="EventLog" class="org.apache.log4j.nt.NTEventLogAppender">
     <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
               value="%d %-5p [%t] %c (%F:%L) - %m"/>
        />
     </layout>
  </appender>

  <!-- The two servlets belong to the com.itxc.sdialer and com.itxc.eclipse packages. -->
  <category name="com.itxc">
    <priority value="warn" />
    <appender-ref ref="EventLog" />
  </category>

  <root>
     <priority value ="debug" />
     <appender-ref ref="RollingFile" />
  </root>

What do I have to do in order to get two (or more) webapps to both log to the NT Event Log?
Thanks in advance for your help.

Eli Tucker
ITXC Corp.

Reply via email to