From 86f1dc2117e6b6c8abb55ccbc8621743969b8996 Mon Sep 17 00:00:00 2001 From: Hartmut Reuter Date: Mon, 12 Feb 2001 20:29:20 +0000 Subject: [PATCH] mrafs-server-log-handling-20010212 Rotate old logs by date for MR-AFS; Could be adapted to rest of AFS --- src/util/serverLog.c | 56 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/src/util/serverLog.c b/src/util/serverLog.c index 8abfde974..3d3ed3e74 100644 --- a/src/util/serverLog.c +++ b/src/util/serverLog.c @@ -60,10 +60,25 @@ static pthread_mutex_t serverLogMutex; #define F_OK 0 #endif +char *threadname(); + static int serverLogFD = -1; #include int LogLevel; +int mrafsStyleLogs = 0; +int printLocks = 0; +static char ourName[MAXPATHLEN]; + +void WriteLogBuffer(buf,len) + char *buf; + afs_uint32 len; +{ + LOCK_SERVERLOG(); + if (serverLogFD > 0) + write(serverLogFD, buf, len); + UNLOCK_SERVERLOG(); +} /* VARARGS1 */ void FSLog (const char *format, ...) @@ -75,12 +90,20 @@ void FSLog (const char *format, ...) char tbuffer[1024]; char *info; int len; + int i; + char *name; currenttime = time(0); timeStamp = afs_ctime(¤ttime, tbuffer, sizeof(tbuffer)); timeStamp[24] = ' '; /* ts[24] is the newline, 25 is the null */ info = &timeStamp[25]; + if (mrafsStyleLogs) { + name = threadname(); + sprintf(info, "[%s] ", name); + info += strlen(info); + } + va_start(args, format); (void) vsprintf(info, format, args); va_end(args); @@ -118,6 +141,7 @@ void SetDebug_Signal(int signo) else { LogLevel = 1; } + printLocks = 2; #if defined(AFS_PTHREAD_ENV) DebugOn(LogLevel); #else /* AFS_PTHREAD_ENV */ @@ -132,6 +156,7 @@ void ResetDebug_Signal(int signo) { LogLevel = 0; + if (printLocks >0) --printLocks; #if defined(AFS_PTHREAD_ENV) DebugOn(LogLevel); #else /* AFS_PTHREAD_ENV */ @@ -140,6 +165,8 @@ void ResetDebug_Signal(int signo) signal(signo, ResetDebug_Signal); /* on some platforms, this signal */ /* handler needs to be set again */ + if (mrafsStyleLogs) + OpenLog((char *)&ourName); } /*ResetDebug_Signal*/ @@ -158,13 +185,32 @@ int OpenLog(const char *fileName) */ int tempfd; char oldName[MAXPATHLEN]; + struct timeval Start; + struct tm *TimeFields; + char FileName[MAXPATHLEN]; + + if (mrafsStyleLogs) { + TM_GetTimeOfDay(&Start, 0); + TimeFields = localtime(&Start.tv_sec); + if (fileName) { + if (strncmp(fileName, (char *)&ourName, strlen(fileName))) + strcpy((char *)&ourName, (char *) fileName); + } + sprintf(FileName, "%s.%d%02d%02d%02d%02d%02d", ourName, + TimeFields->tm_year + 1900, TimeFields->tm_mon + 1, + TimeFields->tm_mday, TimeFields->tm_hour, + TimeFields->tm_min, TimeFields->tm_sec); + rename (fileName, FileName); /* don't check error code */ + tempfd = open(fileName, O_WRONLY | O_TRUNC | O_CREAT, 0666); + } else { + strcpy(oldName, fileName); + strcat(oldName, ".old"); - strcpy(oldName, fileName); - strcat(oldName, ".old"); + /* don't check error */ + renamefile(fileName, oldName); + tempfd = open(fileName, O_WRONLY|O_TRUNC|O_CREAT, 0666); + } - /* don't check error */ - renamefile(fileName, oldName); - tempfd = open(fileName, O_WRONLY|O_TRUNC|O_CREAT, 0666); if(tempfd < 0) { printf("Unable to open log file %s\n", fileName); -- 2.39.5