Esempio n. 1
0
void xnLogWriteImplV(const XnChar* /*csLogMask*/, XnLogSeverity nSeverity, const XnChar* csFile, XnUInt32 nLine, const XnChar* csFormat, va_list args)
{
	// take time
	XnUInt64 nNow;
	xnOSGetHighResTimeStamp(&nNow);

	// write timestamp and severity
	const XnChar* csSeverity = xnLogGetSeverityString(nSeverity);

	const XnUInt32 nMaxMessageSize = 2047;
	XnChar csMessage[nMaxMessageSize+1];
	XnUInt32 nChars = 0;
	XnUInt32 nMessageLen = 0;

	// write timestamp
	xnOSStrFormat(csMessage + nMessageLen, nMaxMessageSize - nMessageLen, &nChars, "%8llu\t[%s]\t", nNow, csSeverity);
	nMessageLen += nChars;

	XnUInt32 nLineInfoBegin = nMessageLen;

	if (g_xnLoggerData.m_bWriteLineInfo)
	{
		// write line info
		XnChar fileName[XN_FILE_MAX_PATH];
		XnStatus nRetVal = xnOSGetFileName(csFile, fileName, sizeof(fileName));
		if (nRetVal == XN_STATUS_OK)
		{
			xnOSStrFormat(csMessage + nMessageLen, nMaxMessageSize - nMessageLen, &nChars, "%s\t%d\t", fileName, nLine);
			nMessageLen += nChars;
		}
	}

	XnUInt32 nLineInfoEnd = nMessageLen;

	// write message
	xnOSStrFormatV(csMessage + nMessageLen, nMaxMessageSize - nMessageLen, &nChars, csFormat, args);
	nMessageLen += nChars;
	XnUInt32 nUserMsgLen = nChars;

	// write end-of-line
	xnOSStrFormat(csMessage + nMessageLen, nMaxMessageSize - nMessageLen, &nChars, XN_NEW_LINE_SEP);
	nMessageLen += nChars;

	if (g_xnLoggerData.m_bWriteToFile)
	{
		xnOSWriteFile(g_xnLoggerData.m_fLogFile, csMessage, nMessageLen);
	}

	if (g_xnLoggerData.m_bWriteToConsole)
	{
		// Write to console without line info
		XnChar cSaveChar = csMessage[nLineInfoBegin];
		csMessage[nLineInfoBegin] = '\0';
		printf("%s", csMessage);
		csMessage[nLineInfoBegin] = cSaveChar;
		//printf should know how to translate '\n' to proper newline on every platform so we don't need XN_NEW_LINE_SEP here
		printf("%s", csMessage + nLineInfoEnd);
	}

}
Esempio n. 2
0
void xnLogConfigurationChanged()
{
	// if new configuration requires a log file, and we don't have one opened
	if (g_xnLoggerData.m_nLogFilteringType != XN_LOG_WRITE_NONE && g_xnLoggerData.m_bWriteToFile && g_xnLoggerData.m_fLogFile == XN_INVALID_FILE_HANDLE)
	{
		XN_PROCESS_ID nProcID = 0;
		xnOSGetCurrentProcessID(&nProcID);
		XnChar strFileName[XN_FILE_MAX_PATH];
		sprintf(strFileName, "%s%s_%u.log", g_xnLoggerData.m_csLogDir, g_xnLoggerData.m_csTime, nProcID);
		XnStatus nRetVal = xnLogCreateFile(strFileName, &g_xnLoggerData.m_fLogFile);
		if (nRetVal != XN_STATUS_OK)
		{
			// we don't have much to do if files can't be open. Logs will not be written to file
			printf("Couldn't create log file %s! Logs will not be written (error: %s)\n", strFileName, xnGetStatusString(nRetVal));
			g_xnLoggerData.m_fLogFile = XN_INVALID_FILE_HANDLE;
			g_xnLoggerData.m_bWriteToFile = FALSE;
		}
	}

	if (!g_xnLoggerData.m_bBannerPrinted && xnLogIsEnabled(XN_MASK_LOG, XN_LOG_INFO))
	{
		xnLogInfo(XN_MASK_LOG, "OpenNI version is %s", XN_VERSION_STRING);
		g_xnLoggerData.m_bBannerPrinted = TRUE;
	}

	if (g_xnLoggerData.m_fLogFile != XN_INVALID_FILE_HANDLE)
	{
		XnChar csMasks[XN_LOG_MASKS_STRING_LEN];
		xnLogGetMasksString(csMasks);
		xnLogWriteImpl(XN_MASK_LOG, XN_LOG_INFO, __FILE__, __LINE__, "Log system initialized. Console: %d, File: %d, Severity: %s, Masks: %s",
			g_xnLoggerData.m_bWriteToConsole, g_xnLoggerData.m_bWriteToFile, xnLogGetSeverityString(g_xnLoggerData.m_nFilterSeverity), csMasks);
	}
}
Esempio n. 3
0
static void xnLogCreateEntryV(XnBufferedLogEntry* pEntry, const XnChar* csLogMask, XnLogSeverity nSeverity, const XnChar* csFile, XnUInt32 nLine, const XnChar* csFormat, va_list args)
{
	// format message
	XnUInt32 nChars;
	xnOSStrFormatV(pEntry->Buffer(), pEntry->MaxBufferSize(), &nChars, csFormat, args);

	// create log entry
	xnOSGetHighResTimeStamp(&pEntry->nTimestamp);
	pEntry->nSeverity = nSeverity;
	pEntry->strSeverity = xnLogGetSeverityString(nSeverity);
	pEntry->strMask = csLogMask;
	pEntry->strFile = csFile;
	pEntry->nLine = nLine;
}
Esempio n. 4
0
void xnLogCreateFilterChangedMessage(XnBufferedLogEntry* pEntry)
{
	XnChar csMasks[XN_LOG_MASKS_STRING_LEN];
	xnLogGetMasksString(csMasks);
	xnLogCreateEntry(pEntry, XN_MASK_LOG, XN_LOG_INFO, __FILE__, __LINE__, "Filter Info - minimum severity: %s, masks: %s", xnLogGetSeverityString(g_logData.m_nFilterSeverity), csMasks);
}
Esempio n. 5
0
static void xnLogCreateFilterChangedMessage(XnBufferedLogEntry* pEntry)
{
	XnStatus nRetVal = XN_STATUS_OK;
	XN_REFERENCE_VARIABLE(nRetVal);
	
	LogData& logData = LogData::GetInstance();

	XnChar strConfigMessage[XN_LOG_MAX_MESSAGE_LENGTH];
	XnUInt32 nCharsWritten = 0;
	XnUInt32 nMessageLength = 0;
	nRetVal = xnOSStrFormat(strConfigMessage, XN_LOG_MAX_MESSAGE_LENGTH, &nCharsWritten, "--- Filter Info --- Minimum Severity: %s", xnLogGetSeverityString(logData.defaultMinSeverity));
	XN_ASSERT(nRetVal == XN_STATUS_OK);
	nMessageLength += nCharsWritten;

	XnBool bOverrides = FALSE;

	// go over masks, and see if there are any overrides
	for (XnLogMasksHash::ConstIterator it = logData.pMasksHash->Begin(); it != logData.pMasksHash->End(); ++it)
	{
		XnLogSeverity maskSeverity = it->Value().nMinSeverity;
		if (maskSeverity != logData.defaultMinSeverity)
		{
			if (!bOverrides)
			{
				nRetVal = xnOSStrFormat(strConfigMessage + nMessageLength, sizeof(strConfigMessage) - nMessageLength, &nCharsWritten, ". Overriding Masks - ");
				XN_ASSERT(nRetVal == XN_STATUS_OK);
				bOverrides = TRUE;
				nMessageLength += nCharsWritten;
			}
			else
			{
				nRetVal = xnOSStrFormat(strConfigMessage + nMessageLength, sizeof(strConfigMessage) - nMessageLength, &nCharsWritten, ", ");
				XN_ASSERT(nRetVal == XN_STATUS_OK);
				nMessageLength += nCharsWritten;
			}

			nRetVal = xnOSStrFormat(strConfigMessage + nMessageLength, sizeof(strConfigMessage) - nMessageLength, &nCharsWritten, "'%s': %s", it->Key(), xnLogGetSeverityString(maskSeverity));
			XN_ASSERT(nRetVal == XN_STATUS_OK);
			nMessageLength += nCharsWritten;
		}
	}

	xnLogCreateEntry(pEntry, XN_MASK_LOG, XN_LOG_INFO, __FILE__, __LINE__, "%s", strConfigMessage);
}