You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2008/09/05 22:15:42 UTC

svn commit: r692526 - in /logging/log4j/trunk/src: main/java/org/apache/log4j/nt/NTEventLogAppender.java ntdll/nteventlog.cpp

Author: carnold
Date: Fri Sep  5 13:15:41 2008
New Revision: 692526

URL: http://svn.apache.org/viewvc?rev=692526&view=rev
Log:
Bug 44386: Partial revert of 687885

Modified:
    logging/log4j/trunk/src/main/java/org/apache/log4j/nt/NTEventLogAppender.java
    logging/log4j/trunk/src/ntdll/nteventlog.cpp

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/nt/NTEventLogAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/nt/NTEventLogAppender.java?rev=692526&r1=692525&r2=692526&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/nt/NTEventLogAppender.java (original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/nt/NTEventLogAppender.java Fri Sep  5 13:15:41 2008
@@ -30,16 +30,14 @@
    <p><b>WARNING</b> This appender can only be installed and used on a
    Windows system.
 
-   <p>Do not forget to place an NTEventLogAppender.dll
-   or "NTEventLogAppender" + System.getProperty("os.arch") + ".dll"
-   on the path to provide the native functions used by this appender
-   or the appender will not function.
+   <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:cstaylor@pacbell.net">Chris Taylor</a>
    @author <a href="mailto:jim_cakalic@na.biomerieux.com">Jim Cakalic</a> */
 public class NTEventLogAppender extends AppenderSkeleton {
   private int _handle = 0;
-  private long handle64 = 0;
 
   private String source = null;
   private String server = null;
@@ -76,15 +74,10 @@
     }
 
     try {
-      handle64 = registerEventSource64(server, source);
-    } catch(UnsatisfiedLinkError le) {
-        try {
-			_handle = registerEventSource(server, source);
-		} catch (Throwable e) {
-			e.printStackTrace();
-		}
-    } catch (Throwable e) {
+      _handle = registerEventSource(server, source);
+    } catch (Exception e) {
       e.printStackTrace();
+      _handle = 0;
     }
   }
 
@@ -97,24 +90,10 @@
   void activateOptions() {
     if (source != null) {
       try {
-          if (handle64 != 0) {
-             deregisterEventSource64(handle64);
-          } else if (_handle != 0) {
-             deregisterEventSource(_handle);
-        }
-      } catch(Throwable t) {          
-      }
-      try {
-         handle64 = registerEventSource64(server, source);
-      } catch(UnsatisfiedLinkError le) {
-          le.printStackTrace();
-          try {
-             _handle = registerEventSource(server, source);
-          } catch (Throwable e) {
-            LogLog.error("Could not register event source.", e);
-          }
-      } catch(Throwable e) {
-          LogLog.error("Could not register event source.", e);
+   _handle = registerEventSource(server, source);
+      } catch (Exception e) {
+   LogLog.error("Could not register event source.", e);
+   _handle = 0;
       }
     }
   }
@@ -122,51 +101,33 @@
 
   public void append(LoggingEvent event) {
 
-    if (handle64 != 0 || _handle != 0) {
-        StringBuffer sbuf = new StringBuffer();
+    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;
-        //}
-        try {
-            if (handle64 != 0) {
-                reportEvent64(handle64, sbuf.toString(), nt_category);
-            } else {
-                reportEvent(_handle, sbuf.toString(), nt_category);
-            }
-        } catch(Throwable ex) {
-        }
+    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;
+    //}
+    reportEvent(_handle, sbuf.toString(), nt_category);
   }
 
 
   public
   void finalize() {
-    try {
-        if (handle64 != 0) {
-            deregisterEventSource64(handle64);
-            handle64 = 0;
-        }
-        if (_handle != 0) {
-            deregisterEventSource(_handle);
-            _handle = 0;
-        }
-    } catch(Throwable t) {
-    }
+    deregisterEventSource(_handle);
+    _handle = 0;
   }
 
   /**
@@ -194,25 +155,8 @@
   native private int registerEventSource(String server, String source);
   native private void reportEvent(int handle, String message, int level);
   native private void deregisterEventSource(int handle);
-  native private long registerEventSource64(String server, String source);
-  native private void reportEvent64(long handle, String message, int level);
-  native private void deregisterEventSource64(long handle);
 
   static {
-    try {
-        System.loadLibrary("NTEventLogAppender");
-    } catch(UnsatisfiedLinkError e) {
-        try {
-            String archLib = "NTEventLogAppender" + System.getProperty("os.arch");
-            try {
-                System.loadLibrary(archLib);
-            } catch(Throwable t) {
-                LogLog.error("Unable to load NTEventLogAppender.dll or " + archLib + ".dll.", t);
-            }
-        } catch(Throwable t) {
-            LogLog.error("Unable to load NTEventLogAppender.dll", e);
-        }
-    }
-
+    System.loadLibrary("NTEventLogAppender");
   }
 }

Modified: logging/log4j/trunk/src/ntdll/nteventlog.cpp
URL: http://svn.apache.org/viewvc/logging/log4j/trunk/src/ntdll/nteventlog.cpp?rev=692526&r1=692525&r2=692526&view=diff
==============================================================================
--- logging/log4j/trunk/src/ntdll/nteventlog.cpp (original)
+++ logging/log4j/trunk/src/ntdll/nteventlog.cpp Fri Sep  5 13:15:41 2008
@@ -28,8 +28,6 @@
 #include <jni.h>
 
 
-HINSTANCE gModule = 0;
-
 /*
  * Convert log4j Priority to an EventLog category. Each category is
  * backed by a message resource so that proper category names will
@@ -128,17 +126,6 @@
  */
 JNIEXPORT jint JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_registerEventSource(
    JNIEnv *env, jobject java_this, jstring server, jstring source) {
-       return Java_org_apache_log4j_nt_NTEventLogAppender_registerEventSource64(
-           env, java_this, server, source);
-}
-
-/*
- * Class:     org_apache_log4j_nt_NTEventLogAppender
- * Method:    registerEventSource64
- * Signature: (Ljava/lang/String;Ljava/lang/String;)J
- */
-JNIEXPORT jlong JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_registerEventSource64(
-   JNIEnv *env, jobject java_this, jstring server, jstring source) {
   
   jchar *nserver = 0;
   jchar *nsource = 0;
@@ -156,7 +143,7 @@
     nsource[sourceLen] = 0;
   }
   addRegistryInfo((wchar_t*) nsource);
-  jlong handle = (jlong)RegisterEventSourceW((const wchar_t*) nserver, (const wchar_t*) nsource);
+  jint handle = (jint)RegisterEventSourceW((const wchar_t*) nserver, (const wchar_t*) nsource);
   free(nserver);
   free(nsource);
   return handle;
@@ -169,22 +156,11 @@
  */
 JNIEXPORT void JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_reportEvent(
    JNIEnv *env, jobject java_this, jint handle, jstring jstr, jint priority) {
-  Java_org_apache_log4j_nt_NTEventLogAppender_reportEvent64(
-      env, java_this, handle, jstr, priority);
-}
-
-/*
- * Class:     org_apache_log4j_nt_NTEventLogAppender
- * Method:    reportEvent64
- * Signature: (JLjava/lang/String;I)V
- */
-JNIEXPORT void JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_reportEvent64(
-   JNIEnv *env, jobject java_this, jlong jhandle, jstring jstr, jint priority) {
+  
   jboolean localHandle = JNI_FALSE;
-  HANDLE handle = (HANDLE) jhandle;
   if (handle == 0) {
     // Client didn't give us a handle so make a local one.
-    handle = RegisterEventSourceW(NULL, L"Log4j");
+    handle = (jint)RegisterEventSourceW(NULL, L"Log4j");
     localHandle = JNI_TRUE;
   }
   
@@ -198,14 +174,14 @@
   // a message resource which consists of just '%1' which is replaced
   // by the string we just created.
   const DWORD messageID = 0x1000;
-  ReportEventW(handle, getType(priority), 
+  ReportEventW((HANDLE)handle, getType(priority), 
 	      getCategory(priority), 
 	      messageID, NULL, 1, 0, (const wchar_t**) &msg, NULL);
   
   free((void *)msg);
   if (localHandle == JNI_TRUE) {
     // Created the handle here so free it here too.
-    DeregisterEventSource(handle);
+    DeregisterEventSource((HANDLE)handle);
   }
   return;
 }
@@ -223,31 +199,15 @@
   DeregisterEventSource((HANDLE)handle);
 }
 
-/*
- * Class:     org_apache_log4j_nt_NTEventLogAppender
- * Method:    deregisterEventSource64
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_deregisterEventSource64(
-JNIEnv *env, 
-jobject java_this, 
-jlong handle)
-{
-  DeregisterEventSource((HANDLE)handle);
-}
 
 //
 //  Entry point which registers default event source (Log4j)
 //     when invoked using regsvr32 tool.
 //
 //
-extern "C" {
-__declspec(dllexport) HRESULT __stdcall DllRegisterServer(void) {
+STDAPI __declspec(dllexport) DllRegisterServer(void) {
 	HRESULT hr = E_FAIL;
-    HMODULE hmodule = gModule;
-    if (hmodule == NULL) {
-        hmodule = GetModuleHandleW(L"NTEventLogAppender.dll");
-    }
+    HMODULE hmodule = GetModuleHandleW(L"NTEventLogAppender.dll");
     if (hmodule != NULL) {
         wchar_t modpath[_MAX_PATH];
         DWORD modlen = GetModuleFileNameW(hmodule, modpath, _MAX_PATH - 1);
@@ -269,11 +229,11 @@
 				}
 				if(stat == ERROR_SUCCESS) {
 					DWORD value = 7;
-					stat = RegSetValueExW(hkey, L"TypesSupported", 0, REG_DWORD, (LPBYTE)&value, sizeof(DWORD));
+					stat == RegSetValueExW(hkey, L"TypesSupported", 0, REG_DWORD, (LPBYTE)&value, sizeof(DWORD));
 				}
 				if(stat == ERROR_SUCCESS) {
 					DWORD value = 6;
-					stat = RegSetValueExW(hkey, L"CategoryCount", 0, REG_DWORD, (LPBYTE)&value, sizeof(DWORD));
+					stat == RegSetValueExW(hkey, L"CategoryCount", 0, REG_DWORD, (LPBYTE)&value, sizeof(DWORD));
 				}
 				LONG closeStat = RegCloseKey(hkey);
 				if (stat == ERROR_SUCCESS && closeStat == ERROR_SUCCESS) {
@@ -291,32 +251,9 @@
 //     when invoked using regsvr32 tool with /u option.
 //
 //
-__declspec(dllexport) HRESULT __stdcall DllUnregisterServer(void) {
+STDAPI __declspec(dllexport) DllUnregisterServer(void) {
 	LONG stat = RegDeleteKeyW(HKEY_LOCAL_MACHINE, 
 		L"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\Log4j");
 	return (stat == ERROR_SUCCESS || stat == ERROR_FILE_NOT_FOUND) ? S_OK : E_FAIL;
 }
-
-BOOL APIENTRY DllMain( HMODULE hModule,
-                       DWORD  ul_reason_for_call,
-                       LPVOID lpReserved
-					 )
-{
-	switch (ul_reason_for_call)
-	{
-	case DLL_PROCESS_ATTACH:
-	    gModule = hModule;
-	    break;
-	case DLL_PROCESS_DETACH:
-	    gModule = 0;
-	    break;
-	    
-	case DLL_THREAD_ATTACH:
-	case DLL_THREAD_DETACH:
-		break;
-	}
-	return TRUE;
-}
-
-}
 #endif



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org