Browse code

Remove syslog open/close calls from library

Change-Id: I44b3684c8172d6410d7e149258131f0130fe1939
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/4341
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Sharath George

Kumar Kaushik authored on 2017/11/18 03:21:45
Showing 2 changed files
... ...
@@ -1,7 +1,7 @@
1 1
 Name:          c-rest-engine
2 2
 Summary:       minimal http(s) server library
3 3
 Version:       1.1
4
-Release:       2%{?dist}
4
+Release:       3%{?dist}
5 5
 Group:         Applications/System
6 6
 Vendor:        VMware, Inc.
7 7
 License:       Apache 2.0
... ...
@@ -13,6 +13,7 @@ BuildRequires: coreutils >= 8.22
13 13
 BuildRequires: openssl-devel >= 1.0.1
14 14
 Source0:       %{name}-%{version}.tar.gz
15 15
 Patch0:        socket_RW.patch
16
+Patch1:        syslog_noInit.patch
16 17
 %define sha1   c-rest-engine=a25927fd98ec92df5e210cc4941fa626604636f6
17 18
 
18 19
 %description
... ...
@@ -32,6 +33,7 @@ development libs and header files for c-rest-engine
32 32
 %prep
33 33
 %setup -q
34 34
 %patch0 -p1
35
+%patch1 -p1
35 36
 
36 37
 %build
37 38
 cd build
... ...
@@ -64,6 +66,8 @@ find %{buildroot} -name '*.la' -delete
64 64
 # %doc ChangeLog README COPYING
65 65
 
66 66
 %changelog
67
+*  Fri Nov 17 2017 Kumar Kaushik <kaushikk@vmware.com> 1.1-3
68
+-  Removing syslog open/close from library.
67 69
 *  Fri Nov 10 2017 Kumar Kaushik <kaushikk@vmware.com> 1.1-2
68 70
 -  Fix 0 bytes error codition on socket read and write.
69 71
 *  Tue Oct 31 2017 Kumar Kaushik <kaushikk@vmware.com> 1.1-1
70 72
new file mode 100644
... ...
@@ -0,0 +1,151 @@
0
+From 56c8c0ffd82c8fe8c396d8c00f23688adcdc9ecd Mon Sep 17 00:00:00 2001
1
+From: Kumar Kaushik <kaushikk@vmware.com>
2
+Date: Wed, 15 Nov 2017 17:24:44 -0800
3
+Subject: [PATCH] Remove init/shutdown of syslog from library
4
+
5
+Change-Id: I7705f44c468d2ce69a15b531e108ef0cfbe391b8
6
+---
7
+ build/package/rpm/c-rest-engine.spec |  4 +++-
8
+ common/logging.c                     | 45 ++++++++----------------------------
9
+ server/vmrestd/main.c                |  8 ++++++-
10
+ 3 files changed, 20 insertions(+), 37 deletions(-)
11
+
12
+diff --git a/build/package/rpm/c-rest-engine.spec b/build/package/rpm/c-rest-engine.spec
13
+index 8730113..02c1e62 100644
14
+--- a/build/package/rpm/c-rest-engine.spec
15
+@@ -1,7 +1,7 @@
16
+ Name:          c-rest-engine
17
+ Summary:       Minimal http(s) server library
18
+ Version:       1.1
19
+-Release:       1%{?dist}
20
++Release:       3%{?dist}
21
+ Group:         Applications/System
22
+ Vendor:        VMware, Inc.
23
+ License:       Apache 2.0
24
+diff --git a/common/logging.c b/common/logging.c
25
+index 6bef25c..385c0b6 100644
26
+--- a/common/logging.c
27
+@@ -41,13 +41,7 @@ VmRESTLogInitialize(
28
+     }
29
+     BAIL_ON_VMREST_ERROR(dwError);
30
+ 
31
+-    if (pRESTHandle->pRESTConfig->useSysLog)
32
+-    {
33
+-        /**** Use syslog ****/
34
+-        openlog(pRESTHandle->pRESTConfig->pszDaemonName, 0, LOG_DAEMON);
35
+-        setlogmask(LOG_UPTO(logLevelToSysLogLevel(pRESTHandle->debugLogLevel)));
36
+-    }
37
+-    else if (!(IsNullOrEmptyString(pRESTHandle->pRESTConfig->pszDebugLogFile)))
38
++    if ((!(IsNullOrEmptyString(pRESTHandle->pRESTConfig->pszDebugLogFile))) && (pRESTHandle->pRESTConfig->useSysLog == FALSE))
39
+     {
40
+         if ((pRESTHandle->logFile = fopen(pRESTHandle->pRESTConfig->pszDebugLogFile, "a")) == NULL)
41
+         {
42
+@@ -55,10 +49,6 @@ VmRESTLogInitialize(
43
+             dwError = REST_ENGINE_FAILURE;
44
+         }
45
+     }
46
+-    else
47
+-    {
48
+-        dwError = REST_ENGINE_FAILURE;
49
+-    }
50
+     BAIL_ON_VMREST_ERROR(dwError);
51
+ 
52
+ cleanup:
53
+@@ -76,11 +66,7 @@ VmRESTLogTerminate(
54
+     PVMREST_HANDLE                   pRESTHandle
55
+     )
56
+ {
57
+-    if (pRESTHandle && pRESTHandle->pRESTConfig->useSysLog)
58
+-    {
59
+-        closelog();
60
+-    }
61
+-    else if (pRESTHandle && pRESTHandle->logFile != NULL)
62
++    if (pRESTHandle && pRESTHandle->logFile != NULL)
63
+     {
64
+        fclose(pRESTHandle->logFile);
65
+        pRESTHandle->logFile = NULL;
66
+@@ -95,10 +81,9 @@ VmRESTLog(
67
+     ...)
68
+ {
69
+     char        extraLogMessage[EXTRA_LOG_MESSAGE_LEN] = {0};
70
+-    struct      timespec tspec = {0};
71
+-    time_t      ltime;
72
+-    struct      tm mytm = {0};
73
+     char        logMessage[MAX_LOG_MESSAGE_LEN];
74
++    struct      tm* tm_info = NULL;
75
++    struct      timeval tv = {0};
76
+ 	
77
+     va_list     va;
78
+     const char* logLevelTag = "";
79
+@@ -115,30 +100,20 @@ VmRESTLog(
80
+         vsnprintf( logMessage, sizeof(logMessage), fmt, va );
81
+         logMessage[sizeof(logMessage)-1] = '\0';
82
+         va_end( va );
83
+-        ltime = time(&ltime);
84
++        gettimeofday(&tv, NULL);
85
++
86
++        tm_info = localtime(&tv.tv_sec);
87
+         logLevelTag = logLevelToTag(level);
88
+-        localtime_r(&ltime, &mytm);
89
+-        snprintf(extraLogMessage, sizeof(extraLogMessage) - 1,
90
+-                  "%4d%2d%2d%2d%2d%2d.%03ld:t@%lu:%-3.7s: ",
91
+-                  mytm.tm_year+1900,
92
+-                  mytm.tm_mon+1,
93
+-                  mytm.tm_mday,
94
+-                  mytm.tm_hour,
95
+-                  mytm.tm_min,
96
+-                  mytm.tm_sec,
97
+-                  tspec.tv_nsec/NSECS_PER_MSEC,
98
+-                  (unsigned long) pthread_self(),
99
+-                  logLevelTag? logLevelTag : "UNKNOWN");
100
++        strftime(extraLogMessage, sizeof(extraLogMessage) - 1, "%F %T", tm_info);   
101
+ 
102
+         if (pRESTHandle->pRESTConfig->useSysLog)
103
+         {
104
+             sysLogLevel = logLevelToSysLogLevel(level);
105
+-            snprintf(extraLogMessage, sizeof(extraLogMessage) - 1, "t@%lu: ", (unsigned long) pthread_self());
106
+-            syslog(sysLogLevel, "%s: %s%s", logLevelToTag(level), extraLogMessage, logMessage);
107
++            syslog(sysLogLevel, "%s:%lu t@%lu %-3.7s: %s\n", extraLogMessage, (long unsigned)(tv.tv_usec), (unsigned long) pthread_self(),(logLevelTag? logLevelTag : "UNKNOWN"),logMessage);
108
+         }
109
+         else if (pRESTHandle->logFile != NULL)
110
+         {
111
+-            fprintf(pRESTHandle->logFile, "%s%s\n", extraLogMessage, logMessage);
112
++            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);
113
+             fflush( pRESTHandle->logFile );
114
+         }
115
+     }
116
+diff --git a/server/vmrestd/main.c b/server/vmrestd/main.c
117
+index 353f597..214b28d 100644
118
+--- a/server/vmrestd/main.c
119
+@@ -116,7 +116,7 @@ int main()
120
+     pConfig1->maxDataPerConnMB = 10;
121
+     pConfig1->nWorkerThr = 5;
122
+     pConfig1->nClientCnt = 5;
123
+-    pConfig1->useSysLog = FALSE;
124
++    pConfig1->useSysLog = TRUE;
125
+     pConfig1->pszSSLCertificate = "/root/mycert.pem";
126
+     pConfig1->isSecure = TRUE;
127
+     pConfig1->pszSSLKey = "/root/mycert.pem";
128
+@@ -127,6 +127,10 @@ int main()
129
+     pConfig1->pszSSLCipherList = NULL;
130
+     pConfig1->SSLCtxOptionsFlag = 0;
131
+ 
132
++    /**** Init sys log ****/
133
++    openlog("VMREST_KAUSHIK", 0, LOG_DAEMON);
134
++    setlogmask(LOG_UPTO(LOG_DEBUG));
135
++
136
+     dwError = VmRESTInit(pConfig, &gpRESTHandle);
137
+     dwError = VmRESTInit(pConfig1, &gpRESTHandle1);
138
+ 
139
+@@ -177,6 +181,8 @@ int main()
140
+  //   VmRESTShutdownSSL(sslCtx1);
141
+ #endif
142
+ 
143
++    closelog();
144
++
145
+ return dwError;
146
+ 
147
+ }