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