示例#1
0
bool CLog::AddString(__ulong Category, DEBUG_INFO_LEVEL Level, PTCHAR ptchLogString)
{
	bool bClose = false;
	bool bRet = false;
	PWCHAR pwchLogStr;
	DWORD Len;
	
	DWORD dwWr;
	
	if (m_pParentLog)
		m_pParentLog->AddFormatedString(Category, Level, _T("%s"), ptchLogString);
	if ((Category & m_DbgFilterCat) && (Level <= m_DbgFilterLevel))
		__DbPrintEx(Category, Level, _T("%s"), ptchLogString);
	//__DbPrintEx(DCB_SYSTEM, DL_INFO, L"m_FilterCat=%02X m_FilterLevel=%02X", m_FilterCat, m_FilterLevel);
	if ((Category & m_FilterCat)==0 || (Level > m_FilterLevel))
		return true;

	CAutoLock auto_lock(&m_Sync);

	if (!IsValid())
	{
		if (!OpenFile())
			return false;
		bClose = true;
	}

	pwchLogStr = (PWCHAR) global_Alloc(_WSTR_LEN_B(ptchLogString) + 0x100);
	if (NULL != pwchLogStr)
	{
		CurrentTimeToString(pwchLogStr);
		lstrcat(pwchLogStr, ptchLogString);
		lstrcat(pwchLogStr, _T("\r\n"));

		Len = lstrlen(pwchLogStr);
		WriteFile(m_hFile, pwchLogStr, Len * sizeof(WCHAR), &dwWr, NULL);

		FreeStr(pwchLogStr);

		if (0 != dwWr)
			bRet = true;
	}

	if (bClose)
		ResetState();
	return bRet;
}
示例#2
0
void PrintErrorMessageToFile(FILE* fp, BOOL on, CSTRING fmt, ...)
{
  va_list _args;
  STRING _s;
  if(fp && fmt)
  {
    _s = CurrentTimeToString();
    va_start(_args, fmt);
    fprintf(fp, "[");
    fprintf(fp, _s);
    fprintf(fp, "] ");
    vfprintf(fp, fmt, _args);
    fprintf(fp, "\n");
    va_end(_args);
  }
  if(!on)
    exit(EXITCODE);
}
示例#3
0
void Logger::output(std::string str, LOG_LEVEL level) {
        if (log_enable_ && level >= current_log_level_) {
            ostringstream log_str;
            log_str<< CurrentTimeToString()<<" ["<< syscall(SYS_gettid)<<"] "<< level_string[level] << str <<endl;
            if (to_stdout_) {
                cout<< log_str.str();
            }

            pthread_mutex_lock(&mutex_);
            std::ofstream file_stream(log_file_name_, std::ofstream::app);
            if (file_stream.is_open()) {
                file_stream << log_str.str();
                streampos pos = file_stream.tellp();
                file_stream.close();
                if (pos >= roll_out_size_) {
                    RollOut();
                }
            }
            pthread_mutex_unlock(&mutex_);
        }
}