void LogHandler::log(const std::string& line, LogLevel level) { switch (level) { case LL_TRACE: { LOG4CPLUS_TRACE_STR(log4cplus::Logger::getRoot(), line); } break; case LL_DEBUG: { LOG4CPLUS_DEBUG_STR(log4cplus::Logger::getRoot(), line); } break; case LL_INFO: { LOG4CPLUS_INFO_STR(log4cplus::Logger::getRoot(), line); } break; case LL_WARN: { LOG4CPLUS_WARN_STR(log4cplus::Logger::getRoot(), line); } break; case LL_ERROR: { LOG4CPLUS_ERROR_STR(log4cplus::Logger::getRoot(), line); } break; case LL_FATAL: { LOG4CPLUS_FATAL_STR(log4cplus::Logger::getRoot(), line); } break; } }
BOOL CParserDownloader::ProcessTransferDone(CURLcode res, CDownloadState& dlResultState) { BOOL bRetry = FALSE; DWORD dwCurrState = m_pContext->GetState(); //log CString szLog; if(IS_LOG_ENABLED(THE_LOGGER, log4cplus::DEBUG_LOG_LEVEL)) { szLog.Format("Task[%02d]: State: %s, Transfer result: %s", m_dlParam.m_nTaskID, CCommonUtils::State2Str(dwCurrState), CCommonUtils::CurlCode2Str(res)); LOG4CPLUS_DEBUG_STR(THE_LOGGER, (LPCTSTR)szLog) } //First close connection, this function doesn't change "m_dlInfo" data CloseConnection(); dlResultState.SetState(TSE_COMPLETE); if(dwCurrState == TSE_DESTROYING) { dlResultState.SetState(TSE_DESTROYED); } else if(dwCurrState == TSE_PAUSING) { dlResultState.SetState(TSE_PAUSED); } else if(dwCurrState == TSE_TRANSFERRING) { switch(res) { case CURLE_OK: { //This case should rarely happen if(m_connInfo.m_headerInfo.m_nHTTPCode != 200) { bRetry = RestartConnection(CCommonUtils::INT_OPER_INCREASE); if(!bRetry) { dlResultState.SetState(TSE_END_WITH_ERROR, m_connInfo.m_headerInfo.m_szStatusLine); } szLog.Format("Task[%02d]: [Server Error]: %s. Retry=%d", m_dlParam.m_nTaskID, m_connInfo.m_headerInfo.m_szStatusLine, bRetry); LOG4CPLUS_ERROR_STR(THE_LOGGER, (LPCTSTR)szLog) } } break; case CURLE_ABORTED_BY_CALLBACK: { szLog.Format("Task[%02d]: Connection stopped by abort callback. Unexpected State: %d", m_dlParam.m_nTaskID, dwCurrState); LOG4CPLUS_FATAL_STR(THE_LOGGER, (LPCTSTR)szLog) ASSERT(FALSE); } break; case CURLE_WRITE_ERROR: { if(m_connInfo.m_headerInfo.m_nHTTPCode != 200) { dlResultState.SetState(TSE_END_WITH_ERROR, m_connInfo.m_headerInfo.m_szStatusLine); } if(IS_LOG_ENABLED(THE_LOGGER, log4cplus::DEBUG_LOG_LEVEL)) { szLog.Format("Task[%02d]: Connection stopped by write data function", m_dlParam.m_nTaskID); LOG4CPLUS_DEBUG_STR(THE_LOGGER, (LPCTSTR)szLog) } } break; case CURLE_OPERATION_TIMEDOUT: { //Always retry bRetry = RestartConnection(CCommonUtils::INT_OPER_KEEP, CCommonUtils::MAX_INTEGER); if(IS_LOG_ENABLED(THE_LOGGER, log4cplus::DEBUG_LOG_LEVEL)) { szLog.Format("Task[%02d]: Timeout, retry [%d]", m_dlParam.m_nTaskID, (int)bRetry); LOG4CPLUS_DEBUG_STR(THE_LOGGER, (LPCTSTR)szLog) } } break; default: { bRetry = RestartConnection(CCommonUtils::INT_OPER_INCREASE); if(!bRetry) { dlResultState.SetState(TSE_END_WITH_ERROR, CCommonUtils::CurlCode2Str(res)); } if(IS_LOG_ENABLED(THE_LOGGER, log4cplus::DEBUG_LOG_LEVEL)) { szLog.Format("Task[%02d]: Retry=[%d], times = %d", m_dlParam.m_nTaskID, (int)bRetry, m_connInfo.m_nRetry); LOG4CPLUS_DEBUG_STR(THE_LOGGER, (LPCTSTR)szLog) } } break; } }