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); } }
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); } }
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; }
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); }
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); }