Esempio n. 1
0
void LogManager::Log(const wxString& msg, int i, Logger::level lv)
{
    // The '\f' FormFeed is used as window clear
    if( msg.Find(_T('\f')) != wxNOT_FOUND )
    {
        ClearLog(i);
        wxArrayString subString = GetArrayFromString(msg, _T('\f'));
        LogInternal(subString.Last(), i, lv);
    }
    else
    {
        LogInternal(msg, i, lv);
    }
}
Esempio n. 2
0
void Log(int nLevel, const WCHAR* message)
{
	struct DELAYED_LOG_INFO
	{
		int level;
		ULONGLONG elapsed;
		std::wstring message;
	};
	static std::list<DELAYED_LOG_INFO> c_LogDelay;

	static ULONGLONG startTime = CSystem::GetTickCount64();
	ULONGLONG elapsed = CSystem::GetTickCount64() - startTime;

	if (TryEnterCriticalSection(&g_CsLog))
	{
		// Log the queued messages first
		EnterCriticalSection(&g_CsLogDelay);

		while (!c_LogDelay.empty())
		{
			DELAYED_LOG_INFO& logInfo = c_LogDelay.front();
			LogInternal(logInfo.level, logInfo.elapsed, logInfo.message.c_str());

			c_LogDelay.erase(c_LogDelay.begin());
		}

		LeaveCriticalSection(&g_CsLogDelay);

		// Log the message
		LogInternal(nLevel, elapsed, message);

		LeaveCriticalSection(&g_CsLog);
	}
	else
	{
		// Queue the message
		EnterCriticalSection(&g_CsLogDelay);

		DELAYED_LOG_INFO logInfo = {nLevel, elapsed, message};
		c_LogDelay.push_back(logInfo);

		LeaveCriticalSection(&g_CsLogDelay);
	}
}
Esempio n. 3
0
void Logger::Log(Level level, const WCHAR* source, const WCHAR* msg)
{
	struct DelayedEntry
	{
		Level level;
		ULONGLONG elapsed;
		std::wstring message;
	};
	static std::list<DelayedEntry> s_DelayedEntries;

	static ULONGLONG s_StartTime = System::GetTickCount64();
	ULONGLONG elapsed = System::GetTickCount64() - s_StartTime;

	if (TryEnterCriticalSection(&m_CsLog))
	{
		// Log queued messages first.
		EnterCriticalSection(&m_CsLogDelay);

		while (!s_DelayedEntries.empty())
		{
			DelayedEntry& entry = s_DelayedEntries.front();
			LogInternal(entry.level, entry.elapsed, source, entry.message.c_str());

			s_DelayedEntries.erase(s_DelayedEntries.begin());
		}

		LeaveCriticalSection(&m_CsLogDelay);

		// Log the actual message.
		LogInternal(level, elapsed, source, msg);

		LeaveCriticalSection(&m_CsLog);
	}
	else
	{
		// Queue message.
		EnterCriticalSection(&m_CsLogDelay);

		DelayedEntry entry = {level, elapsed, msg};
		s_DelayedEntries.push_back(entry);

		LeaveCriticalSection(&m_CsLogDelay);
	}
}
Esempio n. 4
0
		/* static */
		void Log::Error(const wchar_t *format, ...)
		{
			wchar_t buffer[2048];
			memset(buffer, 0, sizeof(buffer));
			
			va_list args;
			va_start(args, format);
			_vsnwprintf_s( buffer, sizeof(buffer) / sizeof(WORD), _TRUNCATE, format, args);

			LogInternal(L"Error", buffer);
		}
void ThreadsafeLogSystem::LogVa(va_list args, ELogVerbosity eVerbosity, const char * format)
{
	LogInternal(eVerbosity, format, args);
}
void ThreadsafeLogSystem::Log(ELogVerbosity eVerbosity, const char * format, ...)
{
	va_list args;
	va_start(args, format);
	LogInternal(eVerbosity, format, args);
}