提交 6e17f9b1 编写于 作者: K kaddepalli

8219914: Change the environment variable for Java Access Bridge logging to have a directory.

Reviewed-by: prr
上级 2dc1cabf
/* /*
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -40,34 +40,24 @@ extern "C" { ...@@ -40,34 +40,24 @@ extern "C" {
static FILE* logFP = nullptr; static FILE* logFP = nullptr;
void initializeFileLogger(char * suffix) { void initializeFileLogger(char * fileName) {
auto var = "JAVA_ACCESSBRIDGE_LOGFILE"; auto var = "JAVA_ACCESSBRIDGE_LOGDIR";
const auto envfilePath = getenv(var); const auto envfilePath = getenv(var);
if (envfilePath != nullptr) { if (envfilePath != nullptr && fileName != nullptr) {
auto ext = const_cast<char*>(strrchr(envfilePath, '.')); auto envFilePathLength = strlen(envfilePath);
auto filePath = static_cast<char*>(nullptr); auto fileNameLength = strlen(fileName);
auto len = strlen(envfilePath); auto filePathSize = envFilePathLength + 1 + fileNameLength + 5; //1 for "/", 5 for ".log" and 0;
auto suffixlen = suffix != nullptr ? strlen(suffix) : (decltype(strlen(nullptr)))0; auto filePath = new char[filePathSize];
memset(filePath, 0, filePathSize*sizeof(char));
if (ext == nullptr) { memcpy(filePath, envfilePath, envFilePathLength*sizeof(char));
filePath = new char[len + suffixlen + 5]; filePath[envFilePathLength] = '/';
memset(filePath, 0, len + suffixlen + 5); memcpy(filePath + envFilePathLength + 1, fileName, fileNameLength*sizeof(char));
memcpy(filePath, envfilePath, len); memcpy(filePath + envFilePathLength + 1 + fileNameLength, ".log", 4*sizeof(char));
memcpy(filePath + len, suffix, suffixlen);
memcpy(filePath + len + suffixlen, ".log", 4);
} else {
auto extLen = strlen(ext);
filePath = new char[len + suffixlen + 1];
memset(filePath, 0, len + suffixlen + 1);
memcpy(filePath, envfilePath, len - extLen);
memcpy(filePath + len - extLen, suffix, suffixlen);
memcpy(filePath + len + suffixlen - extLen, ext, extLen);
}
logFP = fopen(filePath, "w"); logFP = fopen(filePath, "w");
if (logFP == nullptr) { if (logFP == nullptr) {
PrintDebugString("couldnot open file %s", filePath); printf("\n%s\n", filePath);
PrintDebugString("Could not open file %s", filePath);
} }
delete [] filePath; delete [] filePath;
...@@ -114,7 +104,7 @@ auto getTimeStamp() -> long long { ...@@ -114,7 +104,7 @@ auto getTimeStamp() -> long long {
#endif #endif
#endif #endif
if (logFP) { if (logFP) {
fprintf(logFP, "[%lldu] ", getTimeStamp()); fprintf(logFP, "[%llu] ", getTimeStamp());
va_list args; va_list args;
va_start(args, msg); va_start(args, msg);
vfprintf(logFP, msg, args); vfprintf(logFP, msg, args);
......
/* /*
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -53,7 +53,7 @@ extern "C" { ...@@ -53,7 +53,7 @@ extern "C" {
void PrintJavaDebugString(char *msg, ...); void PrintJavaDebugString(char *msg, ...);
void wPrintJavaDebugString(wchar_t *msg, ...); void wPrintJavaDebugString(wchar_t *msg, ...);
void wPrintDebugString(wchar_t *msg, ...); void wPrintDebugString(wchar_t *msg, ...);
void initializeFileLogger(char * suffix); void initializeFileLogger(char * fileName);
void finalizeFileLogger(); void finalizeFileLogger();
#ifdef __cplusplus #ifdef __cplusplus
......
/* /*
* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -167,7 +167,7 @@ extern "C" { ...@@ -167,7 +167,7 @@ extern "C" {
JavaAccessBridge::JavaAccessBridge(HINSTANCE hInstance) { JavaAccessBridge::JavaAccessBridge(HINSTANCE hInstance) {
windowsInstance = hInstance; windowsInstance = hInstance;
ATs = (AccessBridgeATInstance *) 0; ATs = (AccessBridgeATInstance *) 0;
initializeFileLogger("_java_access_bridge"); initializeFileLogger("java_access_bridge");
initBroadcastMessageIDs(); // get the unique to us broadcast msg. IDs initBroadcastMessageIDs(); // get the unique to us broadcast msg. IDs
} }
......
/* /*
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -130,7 +130,7 @@ extern "C" { ...@@ -130,7 +130,7 @@ extern "C" {
switch (fdwReason) { switch (fdwReason) {
case DLL_PROCESS_ATTACH: // A Windows executable loaded us case DLL_PROCESS_ATTACH: // A Windows executable loaded us
initializeFileLogger("_windows_access_bridge"); initializeFileLogger("windows_access_bridge");
PrintDebugString("[INFO]: DLL_PROCESS_ATTACH"); PrintDebugString("[INFO]: DLL_PROCESS_ATTACH");
theWindowsAccessBridge = new WinAccessBridge(hinstDll); theWindowsAccessBridge = new WinAccessBridge(hinstDll);
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册