void PvaPyLogger::log(const char* messageLevel, const char* message, va_list messageArgs) const { char timeStamp[MaxTimeStampLength]; prepareTimeStamp(timeStamp, MaxTimeStampLength, TimeStampFormat); if (useEpicsLog) { errlogPrintf("%s %s %s: ", timeStamp, messageLevel, name); errlogVprintf(message, messageArgs); errlogPrintf("\n"); } else { // On vxWorks fflush() fails frequently, so only use // fprintf() if logging goes into a file. if (usePrintf) { printf("%s %s %s: ", timeStamp, messageLevel, name); vprintf(message, messageArgs); printf("\n"); } else { fprintf(logFile, "%s %s %s: ", timeStamp, messageLevel, name); vfprintf(logFile, message, messageArgs); fprintf(logFile, "\n"); fflush(logFile); } } }
/* * Log error and terminate */ void LogFatal (const char *msg, ...) { va_list ap; va_start (ap, msg); errlogVprintf (msg, ap); va_end (ap); delayedPanic (msg); }
epicsShareFunc void cantProceed(const char *msg, ...) { va_list pvar; va_start(pvar, msg); if (msg) errlogVprintf(msg, pvar); va_end(pvar); errlogPrintf("Thread %s (%p) can't proceed, suspending.\n", epicsThreadGetNameSelf(), (void *)epicsThreadGetIdSelf()); errlogFlush(); epicsThreadSleep(1.0); while (1) epicsThreadSuspendSelf(); }