int chkLogfileName (char *logDir, char *logFileName) { time_t myTime; char *logFile = NULL; int i; myTime = time (0); if (myTime < LogfileLastChkTime + LOGFILE_CHK_INT) { /* not time yet */ return (0); } getLogfileName (&logFile, logDir, logFileName); if (CurLogfileName != NULL && strcmp (CurLogfileName, logFile) == 0) { free (logFile); return (0); } /* open the logfile */ if ((i = open(logFile, O_CREAT|O_RDWR, 0644)) < 0) { fprintf(stderr, "Unable to open logFile %s\n", logFile); free (logFile); return (-1); } else { lseek (i, 0, SEEK_END); } if (CurLogfileName != NULL) { free (CurLogfileName); } CurLogfileName = logFile; close (0); close (1); close (2); (void) dup2(i, 0); (void) dup2(i, 1); (void) dup2(i, 2); (void) close(i); return (0); }
Logger *LoggerManager::CreateLoggerInstance() { if (loggerInstance == NULL) { switch(loggerStyle) { case LoggerManager::DEFAULT: loggerInstance = new LoggerDefault(getLoggerLvl()); break; case LoggerManager::LOGFILE: loggerInstance = new LoggerLogFile(getLogfileName(), getWritemode(), getLoggerLvl()); break; case LoggerManager::COLOR: loggerInstance = new LoggerColor(getLoggerLvl(), colors); break; case LoggerManager::NETWORKSTREAM: loggerInstance = new LoggerNetworkStream(getProtocol(), getIpAddress(), getPortNumber(), getLoggerLvl()); break; } } return loggerInstance; }