Ejemplo n.º 1
0
void Logger::startLog( LogLevel loglevel, const char * file, int line,
                       const char * pretty)
{
  getOutputStream() << getFormattedDate() << ' ' <<
                       logLevelToStr(loglevel) << " (" <<
                       file << ':' << line << ") [" <<
                       pretty << "] ";
}
Ejemplo n.º 2
0
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 << "] ";
}
Ejemplo n.º 3
0
//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;
}