1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-05 01:43:31 +03:00

added handling of repeated messages

This commit is contained in:
tomas@poseidon.ndb.mysql.com
2004-12-22 18:27:07 +01:00
parent 99622f3fa1
commit e9c0a17cf2
3 changed files with 65 additions and 6 deletions

View File

@@ -23,22 +23,71 @@
//
LogHandler::LogHandler() :
m_pDateTimeFormat("%d-%.2d-%.2d %.2d:%.2d:%.2d"),
m_errorCode(0)
{
m_errorCode(0),
m_last_category(m_last_category_buf),
m_last_message(m_last_message_buf)
{
m_max_repeat_frequency= 3; // repeat messages maximum every 3 seconds
m_last_category_buf[0]= 0;
m_last_message_buf[0]= 0;
}
LogHandler::~LogHandler()
{
if (m_last_message != m_last_message_buf)
free(m_last_message);
if (m_last_category != m_last_category_buf)
free(m_last_category);
}
void
LogHandler::append(const char* pCategory, Logger::LoggerLevel level,
const char* pMsg)
{
{
time_t now;
now= ::time((time_t*)NULL);
if (level != m_last_level ||
strcmp(pCategory, m_last_category) ||
strcmp(pMsg, m_last_message))
{
if (m_last_message != m_last_message_buf)
free(m_last_message);
if (m_last_category != m_last_category_buf)
free(m_last_category);
m_count_repeated_messages= 0;
m_last_level= level;
BaseString::snprintf(m_last_category_buf, sizeof(m_last_category_buf), "%s", pCategory);
BaseString::snprintf(m_last_message_buf, sizeof(m_last_message_buf), "%s", pMsg);
// ToDo: handle too long messages correctly
// right now all that will happen is that too long messages
// will be repeated unneccesarily
}
else // repeated message
{
if (now < m_last_log_time+m_max_repeat_frequency)
{
m_count_repeated_messages++;
return;
}
}
writeHeader(pCategory, level);
writeMessage(pMsg);
if (m_count_repeated_messages == 0)
writeMessage(pMsg);
else
{
BaseString str(pMsg);
str.appfmt(" - repeated %d times", m_count_repeated_messages);
writeMessage(str.c_str());
m_count_repeated_messages= 0;
}
writeFooter();
}
m_last_log_time= now;
}
const char*
LogHandler::getDefaultHeader(char* pStr, const char* pCategory,