Hello, working with the NtEventLogAppender I posted yesterday I noticed that this version was a modification of the log4j 1.1.3 version. Now I have an modification of the log4j 1.2.8 version of the NtEventLogAppender.java that handles the problem of a not accessible NtEventLogAppender.dll.
regards Volker Mentzner /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */ package org.apache.log4j.nt; import org.apache.log4j.*; import org.apache.log4j.spi.LoggingEvent; import org.apache.log4j.Level; import org.apache.log4j.helpers.LogLog; import java.io.*; /** Append to the NT event log system. <p><b>WARNING</b> This appender can only be installed and used on a Windows system. <p>Do not forget to place the file NTEventLogAppender.dll in a directory that is on the PATH of the Windows system. Otherwise, you will get a java.lang.UnsatisfiedLinkError. @author <a href="mailto:[EMAIL PROTECTED]">Chris Taylor</a> @author <a href="mailto:[EMAIL PROTECTED]">Jim Cakalic</a> */ public class NTEventLogAppender extends AppenderSkeleton { static boolean libraryLoaded = false; private int _handle = 0; private String source = null; private String server = null; private static final int FATAL = Level.FATAL.toInt(); private static final int ERROR = Level.ERROR.toInt(); private static final int WARN = Level.WARN.toInt(); private static final int INFO = Level.INFO.toInt(); private static final int DEBUG = Level.DEBUG.toInt(); public NTEventLogAppender() { this(null, null, null); } public NTEventLogAppender(String source) { this(null, source, null); } public NTEventLogAppender(String server, String source) { this(server, source, null); } public NTEventLogAppender(Layout layout) { this(null, null, layout); } public NTEventLogAppender(String source, Layout layout) { this(null, source, layout); } public NTEventLogAppender(String server, String source, Layout layout) { if (!libraryLoaded) { try { System.loadLibrary("NTEventLogAppender"); libraryLoaded = true; } catch (UnsatisfiedLinkError err) { LogLog.warn("problem loading NTEventLogAppender.dll:", err); } catch (SecurityException ex) { LogLog.warn("problem loading NTEventLogAppender.dll:", ex); } } if (source == null) { source = "Log4j"; } if (layout == null) { this.layout = new TTCCLayout(); } else { this.layout = layout; } try { if (libraryLoaded) _handle = registerEventSource(server, source); } catch (Exception e) { e.printStackTrace(); _handle = 0; } } public void close() { // unregister ... } public void activateOptions() { if (libraryLoaded && (source != null)) { try { _handle = registerEventSource(server, source); } catch (Exception e) { LogLog.error("Could not register event source.", e); _handle = 0; } } } public void append(LoggingEvent event) { StringBuffer sbuf = new StringBuffer(); sbuf.append(layout.format(event)); if(layout.ignoresThrowable()) { String[] s = event.getThrowableStrRep(); if (s != null) { int len = s.length; for(int i = 0; i < len; i++) { sbuf.append(s[i]); } } } // Normalize the log message level into the supported categories int nt_category = event.getLevel().toInt(); // Anything above FATAL or below DEBUG is labeled as INFO. //if (nt_category > FATAL || nt_category < DEBUG) { // nt_category = INFO; //} if (libraryLoaded) reportEvent(_handle, sbuf.toString(), nt_category); } public void finalize() { if (libraryLoaded) deregisterEventSource(_handle); _handle = 0; } /** The <b>Source</b> option which names the source of the event. The current value of this constant is <b>Source</b>. */ public void setSource(String source) { this.source = source.trim(); } public String getSource() { return source; } /** The <code>NTEventLogAppender</code> requires a layout. Hence, this method always returns <code>true</code>. */ public boolean requiresLayout() { return true; } native private int registerEventSource(String server, String source); native private void reportEvent(int handle, String message, int level); native private void deregisterEventSource(int handle); static { System.loadLibrary("NTEventLogAppender"); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]