mturk 2004/11/13 10:52:10
Modified: daemon/src/native/nt/procrun/apps/prunsrv prunsrv.c
daemon/src/native/nt/procrun/include log.h
daemon/src/native/nt/procrun/src log.c
Log:
Add 'auto' option for StdError and StdOutput.
When set to auto the log file will be appended and
formated as $LogPath\stderr_YYYYMMDD.log
Revision Changes Path
1.11 +27 -18
jakarta-commons/daemon/src/native/nt/procrun/apps/prunsrv/prunsrv.c
Index: prunsrv.c
===================================================================
RCS file:
/home/cvs/jakarta-commons/daemon/src/native/nt/procrun/apps/prunsrv/prunsrv.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- prunsrv.c 25 Sep 2004 14:25:30 -0000 1.10
+++ prunsrv.c 13 Nov 2004 18:52:10 -0000 1.11
@@ -36,7 +36,7 @@
#define STDERR_FILENO 2
typedef struct APX_STDWRAP {
- BOOL bAppend;
+ LPCWSTR szLogPath;
LPCWSTR szStdOutFilename;
LPCWSTR szStdErrFilename;
HANDLE hStdOutFile;
@@ -197,8 +197,13 @@
* If stderrfile is not specified it will
* go to stdoutfile.
*/
+
+
+
static BOOL redirectStdStreams(APX_STDWRAP *lpWrapper)
{
+ BOOL aErr = FALSE;
+ BOOL aOut = FALSE;
/* Clear up the handles */
lpWrapper->fpStdErrFile = NULL;
@@ -210,14 +215,17 @@
/* redirect to file or console */
if (lpWrapper->szStdOutFilename) {
- if (*lpWrapper->szStdOutFilename == L'+') {
- ++lpWrapper->szStdOutFilename;
- lpWrapper->bAppend = TRUE;
+ if (lstrcmpiW(lpWrapper->szStdOutFilename, PRSRV_AUTO) == 0) {
+ aOut = TRUE;
+ lpWrapper->szStdOutFilename = apxLogFile(gPool,
+ lpWrapper->szLogPath,
+ NULL,
+ L"stdout_");
}
/* Delete the file if not in append mode
* XXX: See if we can use the params instead of that.
*/
- if (!lpWrapper->bAppend)
+ if (!aOut)
DeleteFileW(lpWrapper->szStdOutFilename);
lpWrapper->hStdOutFile = CreateFileW(lpWrapper->szStdOutFilename,
GENERIC_WRITE | GENERIC_READ,
@@ -243,12 +251,15 @@
return FALSE;
}
if (lpWrapper->szStdErrFilename) {
- if (*lpWrapper->szStdErrFilename == L'+') {
- ++lpWrapper->szStdErrFilename;
- lpWrapper->bAppend = TRUE;
+ if (lstrcmpiW(lpWrapper->szStdErrFilename, PRSRV_AUTO) == 0) {
+ aErr = TRUE;
+ lpWrapper->szStdErrFilename = apxLogFile(gPool,
+ lpWrapper->szLogPath,
+ NULL,
+ L"stderr_");
}
- if (!lpWrapper->bAppend)
- DeleteFileW(lpWrapper->szStdOutFilename);
+ if (!aErr)
+ DeleteFileW(lpWrapper->szStdErrFilename);
lpWrapper->hStdErrFile = CreateFileW(lpWrapper->szStdErrFilename,
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ |
FILE_SHARE_WRITE,
@@ -1193,15 +1204,13 @@
apxLogWrite(APXLOG_MARK_DEBUG "Procrun log initialized");
AplZeroMemory(&gStdwrap, sizeof(APX_STDWRAP));
-
- gStdwrap.szStdErrFilename = SO_STDERROR;
- if (lpCmdline->dwCmdIndex == 1) {
- /* In debug mode allways use console */
- gStdwrap.szStdOutFilename = NULL;
- }
- else
+
+ gStdwrap.szLogPath = SO_LOGPATH;
+ /* In debug mode allways use console */
+ if (lpCmdline->dwCmdIndex != 1) {
gStdwrap.szStdOutFilename = SO_STDOUTPUT;
-
+ gStdwrap.szStdErrFilename = SO_STDERROR;
+ }
redirectStdStreams(&gStdwrap);
switch (lpCmdline->dwCmdIndex) {
case 1: /* Run Service as console application */
1.2 +6 -0
jakarta-commons/daemon/src/native/nt/procrun/include/log.h
Index: log.h
===================================================================
RCS file:
/home/cvs/jakarta-commons/daemon/src/native/nt/procrun/include/log.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- log.h 7 Apr 2004 11:23:46 -0000 1.1
+++ log.h 13 Nov 2004 18:52:10 -0000 1.2
@@ -49,6 +49,12 @@
#define APXLOG_MARK_RAW NULL, APXLOG_LEVEL_INFO, FALSE, NULL, 0,
#define APXLOG_MARK_SYSERR NULL, APXLOG_LEVEL_ERROR, TRUE, __FILE__,
__LINE__, NULL
+LPWSTR apxLogFile(
+ APXHANDLE hPool,
+ LPCWSTR szPath,
+ LPCWSTR szPrefix,
+ LPCWSTR szName
+);
HANDLE apxLogOpen(
APXHANDLE hPool,
1.2 +49 -0 jakarta-commons/daemon/src/native/nt/procrun/src/log.c
Index: log.c
===================================================================
RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/src/log.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- log.c 7 Apr 2004 11:24:47 -0000 1.1
+++ log.c 13 Nov 2004 18:52:10 -0000 1.2
@@ -39,6 +39,55 @@
static apx_logfile_st *_st_sys_loghandle = NULL;
static apx_logfile_st _st_sys_errhandle = { NULL, APXLOG_LEVEL_WARN, FALSE};
+
+
+LPWSTR apxLogFile(
+ APXHANDLE hPool,
+ LPCWSTR szPath,
+ LPCWSTR szPrefix,
+ LPCWSTR szName)
+{
+ LPWSTR sRet;
+ WCHAR sPath[MAX_PATH+1];
+ WCHAR sName[MAX_PATH+1];
+ SYSTEMTIME sysTime;
+
+ GetLocalTime(&sysTime);
+ if (!szPath) {
+ if (GetSystemDirectoryW(sPath, MAX_PATH) == 0)
+ return INVALID_HANDLE_VALUE;
+ lstrcatW(sPath, L"\\LogFiles\\");
+ if (!szPrefix)
+ lstrcatW(sPath, L"Apache");
+ else
+ lstrcatW(sPath, szPrefix);
+ wsprintfW(sName, L"\\%s%04d%02d%02d.log",
+ szName,
+ sysTime.wYear,
+ sysTime.wMonth,
+ sysTime.wDay);
+ }
+ else {
+ lstrcpyW(sPath, szPath);
+ if (szPrefix)
+ wsprintfW(sName, L"\\%s", szPrefix);
+ else
+ wsprintfW(sName, L"\\%s%04d%02d%02d.log",
+ szName,
+ sysTime.wYear,
+ sysTime.wMonth,
+ sysTime.wDay);
+ }
+ sRet = apxPoolAlloc(hPool, (MAX_PATH + 1) * sizeof(WCHAR));
+ /* Set default level to info */
+ CreateDirectoryW(sPath, NULL);
+
+ lstrcpyW(sRet, sPath);
+ lstrcatW(sRet, sName);
+
+ return sRet;
+}
+
/* Open the log file
* TODO: format like standard apache error.log
* Add the EventLogger
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]