From 56c8c0ffd82c8fe8c396d8c00f23688adcdc9ecd Mon Sep 17 00:00:00 2001
From: Kumar Kaushik <kaushikk@vmware.com>
Date: Wed, 15 Nov 2017 17:24:44 -0800
Subject: [PATCH] Remove init/shutdown of syslog from library
Change-Id: I7705f44c468d2ce69a15b531e108ef0cfbe391b8
---
build/package/rpm/c-rest-engine.spec | 4 +++-
common/logging.c | 45 ++++++++----------------------------
server/vmrestd/main.c | 8 ++++++-
3 files changed, 20 insertions(+), 37 deletions(-)
diff --git a/build/package/rpm/c-rest-engine.spec b/build/package/rpm/c-rest-engine.spec
index 8730113..02c1e62 100644
--- a/build/package/rpm/c-rest-engine.spec
+++ b/build/package/rpm/c-rest-engine.spec
@@ -1,7 +1,7 @@
Name: c-rest-engine
Summary: Minimal http(s) server library
Version: 1.1
-Release: 1%{?dist}
+Release: 3%{?dist}
Group: Applications/System
Vendor: VMware, Inc.
License: Apache 2.0
diff --git a/common/logging.c b/common/logging.c
index 6bef25c..385c0b6 100644
--- a/common/logging.c
+++ b/common/logging.c
@@ -41,13 +41,7 @@ VmRESTLogInitialize(
}
BAIL_ON_VMREST_ERROR(dwError);
- if (pRESTHandle->pRESTConfig->useSysLog)
- {
- /**** Use syslog ****/
- openlog(pRESTHandle->pRESTConfig->pszDaemonName, 0, LOG_DAEMON);
- setlogmask(LOG_UPTO(logLevelToSysLogLevel(pRESTHandle->debugLogLevel)));
- }
- else if (!(IsNullOrEmptyString(pRESTHandle->pRESTConfig->pszDebugLogFile)))
+ if ((!(IsNullOrEmptyString(pRESTHandle->pRESTConfig->pszDebugLogFile))) && (pRESTHandle->pRESTConfig->useSysLog == FALSE))
{
if ((pRESTHandle->logFile = fopen(pRESTHandle->pRESTConfig->pszDebugLogFile, "a")) == NULL)
{
@@ -55,10 +49,6 @@ VmRESTLogInitialize(
dwError = REST_ENGINE_FAILURE;
}
}
- else
- {
- dwError = REST_ENGINE_FAILURE;
- }
BAIL_ON_VMREST_ERROR(dwError);
cleanup:
@@ -76,11 +66,7 @@ VmRESTLogTerminate(
PVMREST_HANDLE pRESTHandle
)
{
- if (pRESTHandle && pRESTHandle->pRESTConfig->useSysLog)
- {
- closelog();
- }
- else if (pRESTHandle && pRESTHandle->logFile != NULL)
+ if (pRESTHandle && pRESTHandle->logFile != NULL)
{
fclose(pRESTHandle->logFile);
pRESTHandle->logFile = NULL;
@@ -95,10 +81,9 @@ VmRESTLog(
...)
{
char extraLogMessage[EXTRA_LOG_MESSAGE_LEN] = {0};
- struct timespec tspec = {0};
- time_t ltime;
- struct tm mytm = {0};
char logMessage[MAX_LOG_MESSAGE_LEN];
+ struct tm* tm_info = NULL;
+ struct timeval tv = {0};
va_list va;
const char* logLevelTag = "";
@@ -115,30 +100,20 @@ VmRESTLog(
vsnprintf( logMessage, sizeof(logMessage), fmt, va );
logMessage[sizeof(logMessage)-1] = '\0';
va_end( va );
- ltime = time(<ime);
+ gettimeofday(&tv, NULL);
+
+ tm_info = localtime(&tv.tv_sec);
logLevelTag = logLevelToTag(level);
- localtime_r(<ime, &mytm);
- snprintf(extraLogMessage, sizeof(extraLogMessage) - 1,
- "%4d%2d%2d%2d%2d%2d.%03ld:t@%lu:%-3.7s: ",
- mytm.tm_year+1900,
- mytm.tm_mon+1,
- mytm.tm_mday,
- mytm.tm_hour,
- mytm.tm_min,
- mytm.tm_sec,
- tspec.tv_nsec/NSECS_PER_MSEC,
- (unsigned long) pthread_self(),
- logLevelTag? logLevelTag : "UNKNOWN");
+ strftime(extraLogMessage, sizeof(extraLogMessage) - 1, "%F %T", tm_info);
if (pRESTHandle->pRESTConfig->useSysLog)
{
sysLogLevel = logLevelToSysLogLevel(level);
- snprintf(extraLogMessage, sizeof(extraLogMessage) - 1, "t@%lu: ", (unsigned long) pthread_self());
- syslog(sysLogLevel, "%s: %s%s", logLevelToTag(level), extraLogMessage, logMessage);
+ syslog(sysLogLevel, "%s:%lu t@%lu %-3.7s: %s\n", extraLogMessage, (long unsigned)(tv.tv_usec), (unsigned long) pthread_self(),(logLevelTag? logLevelTag : "UNKNOWN"),logMessage);
}
else if (pRESTHandle->logFile != NULL)
{
- fprintf(pRESTHandle->logFile, "%s%s\n", extraLogMessage, logMessage);
+ fprintf(pRESTHandle->logFile, "%s:%lu t@%lu %-3.7s: %s\n", extraLogMessage, (long unsigned)(tv.tv_usec), (unsigned long) pthread_self(),(logLevelTag? logLevelTag : "UNKNOWN"),logMessage);
fflush( pRESTHandle->logFile );
}
}
diff --git a/server/vmrestd/main.c b/server/vmrestd/main.c
index 353f597..214b28d 100644
--- a/server/vmrestd/main.c
+++ b/server/vmrestd/main.c
@@ -116,7 +116,7 @@ int main()
pConfig1->maxDataPerConnMB = 10;
pConfig1->nWorkerThr = 5;
pConfig1->nClientCnt = 5;
- pConfig1->useSysLog = FALSE;
+ pConfig1->useSysLog = TRUE;
pConfig1->pszSSLCertificate = "/root/mycert.pem";
pConfig1->isSecure = TRUE;
pConfig1->pszSSLKey = "/root/mycert.pem";
@@ -127,6 +127,10 @@ int main()
pConfig1->pszSSLCipherList = NULL;
pConfig1->SSLCtxOptionsFlag = 0;
+ /**** Init sys log ****/
+ openlog("VMREST_KAUSHIK", 0, LOG_DAEMON);
+ setlogmask(LOG_UPTO(LOG_DEBUG));
+
dwError = VmRESTInit(pConfig, &gpRESTHandle);
dwError = VmRESTInit(pConfig1, &gpRESTHandle1);
@@ -177,6 +181,8 @@ int main()
// VmRESTShutdownSSL(sslCtx1);
#endif
+ closelog();
+
return dwError;
}