void Logger::startLog( LogLevel loglevel, const char * file, int line, const char * pretty) { getOutputStream() << getFormattedDate() << ' ' << logLevelToStr(loglevel) << " (" << file << ':' << line << ") [" << pretty << "] "; }
void Logger::startLog(LogLevel loglevel, const char * file, int line, const char * pretty) { std::string fileStr(file); auto lastSlash = fileStr.find_last_of('/'); getOutputStream() << getFormattedDate() << ' ' << logLevelToStr(loglevel) << " " << fileStr.substr(lastSlash+1) << ':' << line << " [" << pretty << "] "; }
//if outputting to a file, it is designed to be CSV compliant //only print out debug logs in debug library PHIDGET21_API int CCONV CPhidget_log(CPhidgetLog_level level, const char *msg, const char *fmt, ...) { int threadID = 0; int logToStderr = (int)level & LOG_TO_STDERR; va_list va; level = level & 0xFF; #ifdef DEBUG if(level <= logging_level || level == PHIDGET_LOG_DEBUG || logToStderr) #else if((level <= logging_level && level != PHIDGET_LOG_DEBUG) || logToStderr) #endif { if(!logLockInitialized) { CThread_mutex_init(&logLock); logLockInitialized = PTRUE; } CThread_mutex_lock(&logLock); if (!logFile) logFile = stdout; #ifdef WINCE if(logToStderr) fprintf(stderr, "%s: ",logLevelToStr(level)); else if(logFile==stdout) fprintf(logFile, "%s: ",logLevelToStr(level)); else fprintf(logFile, "%d,\"%s\",%s,\"", threadID, msg, logLevelToStr(level)); va_start(va, fmt); if(logToStderr) { vfprintf(stderr, fmt, va); va_end(va); fprintf(stderr, "\n"); fflush(stderr); } else { vfprintf(logFile, fmt, va); va_end(va); if(logFile==stdout) fprintf(logFile, "\n"); else fprintf(logFile, "\"\n"); fflush(logFile); } #else //!WINCE { char date[50]; struct tm *tmp; time_t t; time(&t); #ifndef _WINDOWS struct tm tm; localtime_r(&t, &tm); tmp = &tm; threadID = (int)pthread_self(); #else tmp = localtime(&t); threadID = (int)GetCurrentThreadId(); #endif if (!strftime(date, sizeof (date), "%c", tmp)) strncpy(date, "?", sizeof (date)); if(logToStderr) fprintf(stderr, "%s: ",logLevelToStr(level)); else if(logFile==stdout) fprintf(logFile, "%s: ",logLevelToStr(level)); else fprintf(logFile, "%s,%d,\"%s\",%s,\"", date, threadID, msg, logLevelToStr(level)); va_start(va, fmt); if(logToStderr) { vfprintf(stderr, fmt, va); va_end(va); fprintf(stderr, "\n"); fflush(stderr); } else { vfprintf(logFile, fmt, va); va_end(va); if(logFile==stdout) fprintf(logFile, "\n"); else fprintf(logFile, "\"\n"); fflush(logFile); } } #endif CThread_mutex_unlock(&logLock); } return EPHIDGET_OK; }