diff options
Diffstat (limited to 'ndb/src/common/logger/LogHandler.cpp')
-rw-r--r-- | ndb/src/common/logger/LogHandler.cpp | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/ndb/src/common/logger/LogHandler.cpp b/ndb/src/common/logger/LogHandler.cpp new file mode 100644 index 00000000000..d1445555e87 --- /dev/null +++ b/ndb/src/common/logger/LogHandler.cpp @@ -0,0 +1,142 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "LogHandler.hpp" + +#include <NdbTick.h> +#include <NdbString.h> + +#include <time.h> + +// +// PUBLIC +// +LogHandler::LogHandler() : + m_pDateTimeFormat("%d-%.2d-%.2d %.2d:%.2d:%.2d"), + m_errorCode(0) +{ +} + +LogHandler::~LogHandler() +{ +} + +void +LogHandler::append(const char* pCategory, Logger::LoggerLevel level, + const char* pMsg) +{ + writeHeader(pCategory, level); + writeMessage(pMsg); + writeFooter(); +} + +const char* +LogHandler::getDefaultHeader(char* pStr, const char* pCategory, + Logger::LoggerLevel level) const +{ + char time[MAX_DATE_TIME_HEADER_LENGTH]; + ::snprintf(pStr, MAX_HEADER_LENGTH, "%s [%s] %s -- ", + getTimeAsString((char*)time), + pCategory, + Logger::LoggerLevelNames[level]); + + return pStr; +} + + +const char* +LogHandler::getDefaultFooter() const +{ + return "\n"; +} + +const char* +LogHandler::getDateTimeFormat() const +{ + return m_pDateTimeFormat; +} + +void +LogHandler::setDateTimeFormat(const char* pFormat) +{ + m_pDateTimeFormat = (char*)pFormat; +} + +char* +LogHandler::getTimeAsString(char* pStr) const +{ + struct tm* tm_now; + time_t now; + now = ::time((time_t*)NULL); +#ifdef NDB_WIN32 + tm_now = localtime(&now); +#else + tm_now = ::localtime(&now); //uses the "current" timezone +#endif + + ::snprintf(pStr, MAX_DATE_TIME_HEADER_LENGTH, + m_pDateTimeFormat, + tm_now->tm_year + 1900, + tm_now->tm_mon + 1, //month is [0,11]. +1 -> [1,12] + tm_now->tm_mday, + tm_now->tm_hour, + tm_now->tm_min, + tm_now->tm_sec); + + return pStr; +} + +int +LogHandler::getErrorCode() const +{ + return m_errorCode; +} + +void +LogHandler::setErrorCode(int code) +{ + m_errorCode = code; +} + +bool +LogHandler::parseParams(const BaseString &_params) { + Vector<BaseString> v_args; + + bool ret = true; + + _params.split(v_args, ","); + for(size_t i=0; i < v_args.size(); i++) { + Vector<BaseString> v_param_value; + + v_args[i].split(v_param_value, "=", 2); + if(v_param_value.size() == 2 && + !setParam(v_param_value[0], v_param_value[1])) + ret = false; + } + + if(!checkParams()) + ret = false; + return ret; +} + +bool +LogHandler::checkParams() { + return true; +} + +// +// PRIVATE +// |