/* * During intializing stage (when options were not read yet) all messages * are saved in screen log, even if they shouldn't (according to options). * Method "InitOptions()" check all messages added to screen log during * intializing stage and does three things: * 1) save the messages to log-file (if they should according to options); * 2) delete messages from screen log (if they should not be saved in screen log). * 3) renumerate IDs */ void Log::InitOptions() { const char* messageType[] = { "INFO", "WARNING", "ERROR", "DEBUG", "DETAIL"}; if (g_Options->GetWriteLog() != Options::wlNone && g_Options->GetLogFile()) { m_logFilename = g_Options->GetLogFile(); if (g_Options->GetServerMode() && g_Options->GetWriteLog() == Options::wlReset) { g_Log->ResetLog(); } } m_idGen = 0; for (uint32 i = 0; i < m_messages.size(); ) { Message& message = m_messages.at(i); Options::EMessageTarget target = Options::mtNone; switch (message.GetKind()) { case Message::mkDebug: target = g_Options->GetDebugTarget(); break; case Message::mkDetail: target = g_Options->GetDetailTarget(); break; case Message::mkInfo: target = g_Options->GetInfoTarget(); break; case Message::mkWarning: target = g_Options->GetWarningTarget(); break; case Message::mkError: target = g_Options->GetErrorTarget(); break; } if (target == Options::mtLog || target == Options::mtBoth) { Filelog("%s\t%s", messageType[message.GetKind()], message.GetText()); } if (target == Options::mtLog || target == Options::mtNone) { m_messages.erase(m_messages.begin() + i); } else { message.m_id = ++m_idGen; i++; } } m_optInit = true; }
/* * During intializing stage (when options were not read yet) all messages * are saved in screen log, even if they shouldn't (according to options). * Method "InitOptions()" check all messages added to screen log during * intializing stage and does three things: * 1) save the messages to log-file (if they should according to options); * 2) delete messages from screen log (if they should not be saved in screen log). * 3) renumerate IDs */ void Log::InitOptions() { const char* szMessageType[] = { "INFO", "WARNING", "ERROR", "DEBUG", "DETAIL"}; if (g_pOptions->GetCreateLog() && g_pOptions->GetLogFile()) { m_szLogFilename = strdup(g_pOptions->GetLogFile()); } m_iIDGen = 0; for (unsigned int i = 0; i < m_Messages.size(); ) { Message* pMessage = m_Messages.at(i); Options::EMessageTarget eTarget = Options::mtNone; switch (pMessage->GetKind()) { case Message::mkDebug: eTarget = g_pOptions->GetDebugTarget(); break; case Message::mkDetail: eTarget = g_pOptions->GetDetailTarget(); break; case Message::mkInfo: eTarget = g_pOptions->GetInfoTarget(); break; case Message::mkWarning: eTarget = g_pOptions->GetWarningTarget(); break; case Message::mkError: eTarget = g_pOptions->GetErrorTarget(); break; } if (eTarget == Options::mtLog || eTarget == Options::mtBoth) { Filelog("%s\t%s", szMessageType[pMessage->GetKind()], pMessage->GetText()); } if (eTarget == Options::mtLog || eTarget == Options::mtNone) { delete pMessage; m_Messages.erase(m_Messages.begin() + i); } else { pMessage->m_iID = ++m_iIDGen; i++; } } }