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