mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
b8fe9fb47f
into mysql.com:/home/my/mysql-5.1 BitKeeper/etc/ignore: auto-union BitKeeper/deleted/.del-my_lread.c: Auto merged BitKeeper/deleted/.del-my_lwrite.c: Auto merged client/mysqlbinlog.cc: Auto merged client/mysqldump.c: Auto merged cmd-line-utils/readline/complete.c: Auto merged extra/yassl/src/ssl.cpp: Auto merged libmysql/libmysql.c: Auto merged libmysqld/libmysqld.c: Auto merged mysql-test/mysql-test-run-shell.sh: Auto merged mysql-test/t/create.test: Auto merged mysql-test/t/csv.test: Auto merged mysql-test/t/ctype_cp1250_ch.test: Auto merged mysql-test/t/ctype_ucs.test: Auto merged mysql-test/t/func_sapdb.test: Auto merged mysql-test/t/func_str.test: Auto merged mysql-test/t/grant.test: Auto merged mysql-test/t/group_min_max.test: Auto merged mysql-test/t/innodb.test: Auto merged mysql-test/t/join.test: Auto merged mysql-test/t/select.test: Auto merged mysql-test/t/sp-prelocking.test: Auto merged mysql-test/t/strict.test: Auto merged mysql-test/t/subselect.test: Auto merged mysql-test/t/type_newdecimal.test: Auto merged mysql-test/t/view_grant.test: Auto merged mysys/default.c: Auto merged mysys/mf_iocache.c: Auto merged mysys/mf_keycache.c: Auto merged mysys/my_alloc.c: Auto merged mysys/my_dup.c: Auto merged mysys/my_getwd.c: Auto merged mysys/my_handler.c: Auto merged mysys/my_lib.c: Auto merged mysys/my_malloc.c: Auto merged mysys/my_pread.c: Auto merged mysys/my_seek.c: Auto merged mysys/safemalloc.c: Auto merged sql/Makefile.am: Auto merged sql/filesort.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_subselect.cc: Auto merged sql/log_event.cc: Auto merged sql/net_serv.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_repl.cc: Auto merged sql-common/client.c: Auto merged sql-common/my_time.c: Auto merged sql/sql_select.cc: Auto merged sql/sql_update.cc: Auto merged sql/strfunc.cc: Auto merged sql/tztime.cc: Auto merged sql/unireg.cc: Auto merged storage/heap/_check.c: Auto merged storage/heap/hp_delete.c: Auto merged storage/heap/hp_hash.c: Auto merged storage/heap/hp_open.c: Auto merged storage/heap/hp_rkey.c: Auto merged storage/heap/hp_rrnd.c: Auto merged storage/heap/hp_write.c: Auto merged storage/myisam/ha_myisam.cc: Auto merged storage/myisam/mi_close.c: Auto merged storage/myisam/mi_delete.c: Auto merged storage/myisam/mi_dynrec.c: Auto merged storage/myisam/mi_keycache.c: Auto merged storage/myisam/mi_page.c: Auto merged storage/myisam/mi_statrec.c: Auto merged storage/myisam/mi_test2.c: Auto merged storage/myisam/mi_write.c: Auto merged storage/myisam/myisampack.c: Auto merged storage/myisammrg/ha_myisammrg.cc: Auto merged storage/myisammrg/myrg_extra.c: Auto merged storage/ndb/include/logger/LogHandler.hpp: Auto merged storage/ndb/include/util/OutputStream.hpp: Auto merged storage/ndb/src/common/debugger/EventLogger.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/BackupSignalData.cpp: Auto merged storage/ndb/src/common/logger/LogHandler.cpp: Auto merged storage/ndb/src/common/portlib/NdbMutex.c: Auto merged storage/ndb/src/common/portlib/NdbThread.c: Auto merged storage/ndb/src/common/transporter/Transporter.cpp: Auto merged storage/ndb/src/cw/cpcd/CPCD.hpp: Auto merged storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Auto merged storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: Auto merged storage/ndb/src/kernel/error/ErrorReporter.cpp: Auto merged storage/ndb/src/kernel/error/ErrorReporter.hpp: Auto merged storage/ndb/src/kernel/error/ndbd_exit_codes.c: Auto merged storage/ndb/src/kernel/vm/TransporterCallback.cpp: Auto merged storage/ndb/src/mgmapi/mgmapi.cpp: Auto merged storage/ndb/src/mgmclient/CommandInterpreter.cpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvr.cpp: Auto merged storage/ndb/src/mgmsrv/Services.cpp: Auto merged storage/ndb/src/ndbapi/ClusterMgr.cpp: Auto merged storage/ndb/src/ndbapi/DictCache.cpp: Auto merged storage/ndb/src/ndbapi/Ndb.cpp: Auto merged storage/ndb/src/ndbapi/NdbOperationExec.cpp: Auto merged storage/ndb/src/ndbapi/NdbOperationInt.cpp: Auto merged storage/ndb/src/ndbapi/NdbTransaction.cpp: Auto merged storage/ndb/src/ndbapi/Ndbif.cpp: Auto merged storage/ndb/tools/drop_index.cpp: Auto merged storage/ndb/tools/drop_tab.cpp: Auto merged storage/ndb/tools/ndb_condig.cpp: Auto merged tests/mysql_client_test.c: Auto merged vio/viossl.c: Auto merged vio/viosslfactories.c: Auto merged BUILD/SETUP.sh: Use local version client/client_priv.h: Manual merge mysql-test/mysql-test-run.pl: Manual merge mysql-test/r/ctype_cp1250_ch.result: Manual merge mysql-test/t/disabled.def: Manual merge mysys/hash.c: Manual merge mysys/thr_lock.c: Manual merge server-tools/instance-manager/mysql_connection.cc: Manual merge sql/ha_ndbcluster.cc: Manual merge sql/handler.cc: Manual merge sql/item_timefunc.cc: Manual merge sql/mysqld.cc: Manual merge sql/opt_range.cc: Manual merge sql/slave.cc: Manual merge sql/sql_parse.cc: Manual merge sql/sql_prepare.cc: Manual merge sql/sql_view.cc: Manual merge sql/table.cc: Manual merge storage/archive/ha_archive.cc: Manual merge storage/federated/ha_federated.cc: Manual merge storage/federated/ha_federated.h: Manual merge storage/innobase/handler/ha_innodb.cc: Manual merge storage/ndb/include/ndb_global.h.in: Manual merge storage/ndb/include/util/InputStream.hpp: Manual merge storage/ndb/include/util/SimpleProperties.hpp: Manual merge storage/ndb/src/kernel/blocks/backup/Backup.cpp: Manual merge storage/ndb/src/ndbapi/NdbOperationDefine.cpp: Manual merge storage/ndb/src/ndbapi/NdbOperationSearch.cpp: Manual merge storage/ndb/src/ndbapi/Ndbinit.cpp: Manual merge storage/ndb/src/ndbapi/ndb_cluster_connection.cpp: Manual merge strings/decimal.c: Manual merge vio/viosocket.c: Manual merge
221 lines
5.8 KiB
C++
221 lines
5.8 KiB
C++
/* 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 */
|
|
|
|
#ifndef LOGHANDLER_H
|
|
#define LOGHANDLER_H
|
|
|
|
#include "Logger.hpp"
|
|
|
|
/**
|
|
* This class is the base class for all log handlers. A log handler is
|
|
* responsible for formatting and writing log messages to a specific output.
|
|
*
|
|
* A log entry consists of three parts: a header, <body/log message and a footer.
|
|
* <pre>
|
|
* 09:17:37 2002-03-13 [MgmSrv] INFO -- Local checkpoint 13344 started.
|
|
* </pre>
|
|
*
|
|
* Header format: TIME&DATE CATEGORY LEVEL --
|
|
* TIME&DATE = ctime() format.
|
|
* CATEGORY = Any string.
|
|
* LEVEL = ALERT to DEBUG (Log levels)
|
|
*
|
|
* Footer format: \n (currently only newline)
|
|
*
|
|
* @version #@ $Id: LogHandler.hpp,v 1.7 2003/09/01 10:15:53 innpeno Exp $
|
|
*/
|
|
class LogHandler
|
|
{
|
|
public:
|
|
/**
|
|
* Default constructor.
|
|
*/
|
|
LogHandler();
|
|
|
|
/**
|
|
* Destructor.
|
|
*/
|
|
virtual ~LogHandler();
|
|
|
|
/**
|
|
* Opens/initializes the log handler.
|
|
*
|
|
* @return true if successful.
|
|
*/
|
|
virtual bool open() = 0;
|
|
|
|
/**
|
|
* Closes/free any allocated resources used by the log handler.
|
|
*
|
|
* @return true if successful.
|
|
*/
|
|
virtual bool close() = 0;
|
|
|
|
/**
|
|
* Append a log message to the output stream/file whatever.
|
|
* append() will call writeHeader(), writeMessage() and writeFooter() for
|
|
* a child class and in that order. Append checks for repeated messages.
|
|
* append_impl() does not check for repeats.
|
|
*
|
|
* @param pCategory the category/name to tag the log entry with.
|
|
* @param level the log level.
|
|
* @param pMsg the log message.
|
|
*/
|
|
void append(const char* pCategory, Logger::LoggerLevel level,
|
|
const char* pMsg);
|
|
void append_impl(const char* pCategory, Logger::LoggerLevel level,
|
|
const char* pMsg);
|
|
|
|
/**
|
|
* Returns a default formatted header. It currently has the
|
|
* follwing default format: '%H:%M:%S %Y-%m-%d [CATEGORY] LOGLEVEL --'
|
|
*
|
|
* @param pStr the header string to format.
|
|
* @param pCategory a category/name to tag the log entry with.
|
|
* @param level the log level.
|
|
* @return the header.
|
|
*/
|
|
const char* getDefaultHeader(char* pStr, const char* pCategory,
|
|
Logger::LoggerLevel level) const;
|
|
|
|
/**
|
|
* Returns a default formatted footer. Currently only returns a newline.
|
|
*
|
|
* @return the footer.
|
|
*/
|
|
const char* getDefaultFooter() const;
|
|
|
|
/**
|
|
* Returns the date and time format used by ctime().
|
|
*
|
|
* @return the date and time format.
|
|
*/
|
|
const char* getDateTimeFormat() const;
|
|
|
|
/**
|
|
* Sets the date and time format. It needs to have the same arguments
|
|
* a ctime().
|
|
*
|
|
* @param pFormat the date and time format.
|
|
*/
|
|
void setDateTimeFormat(const char* pFormat);
|
|
|
|
/**
|
|
* Returns the error code.
|
|
*/
|
|
int getErrorCode() const;
|
|
|
|
/**
|
|
* Sets the error code.
|
|
*
|
|
* @param code the error code.
|
|
*/
|
|
void setErrorCode(int code);
|
|
|
|
/**
|
|
* Returns the error string.
|
|
*/
|
|
char* getErrorStr();
|
|
|
|
/**
|
|
* Sets the error string.
|
|
*
|
|
* @param str the error string.
|
|
*/
|
|
void setErrorStr(const char* str);
|
|
|
|
/**
|
|
* Parse logstring parameters
|
|
*
|
|
* @param params list of parameters, formatted as "param=value",
|
|
* entries separated by ","
|
|
* @return true on success, false on failure
|
|
*/
|
|
bool parseParams(const BaseString ¶ms);
|
|
|
|
/**
|
|
* Sets a parameters. What parameters are accepted depends on the subclass.
|
|
*
|
|
* @param param name of parameter
|
|
* @param value value of parameter
|
|
*/
|
|
virtual bool setParam(const BaseString ¶m, const BaseString &value) = 0;
|
|
|
|
/**
|
|
* Checks that all necessary parameters have been set.
|
|
*
|
|
* @return true if all parameters are correctly set, false otherwise
|
|
*/
|
|
virtual bool checkParams();
|
|
|
|
protected:
|
|
/** Max length of the date and time header in the log. */
|
|
STATIC_CONST( MAX_DATE_TIME_HEADER_LENGTH = 64 );
|
|
/** Max length of the header the log. */
|
|
STATIC_CONST( MAX_HEADER_LENGTH = 128 );
|
|
/** Max lenght of footer in the log. */
|
|
STATIC_CONST( MAX_FOOTER_LENGTH = 128 );
|
|
|
|
/**
|
|
* Write the header to the log.
|
|
*
|
|
* @param pCategory the category to tag the log with.
|
|
* @param level the log level.
|
|
*/
|
|
virtual void writeHeader(const char* category, Logger::LoggerLevel level) = 0;
|
|
|
|
/**
|
|
* Write the message to the log.
|
|
*
|
|
* @param pMsg the message to log.
|
|
*/
|
|
virtual void writeMessage(const char* pMsg) = 0;
|
|
|
|
/**
|
|
* Write the footer to the log.
|
|
*
|
|
*/
|
|
virtual void writeFooter() = 0;
|
|
|
|
private:
|
|
/**
|
|
* Returns a string date and time string.
|
|
* @note does not update time, uses m_now as time
|
|
* @param pStr a string.
|
|
* @return a string with date and time.
|
|
*/
|
|
char* getTimeAsString(char* pStr) const;
|
|
time_t m_now;
|
|
|
|
/** Prohibit */
|
|
LogHandler(const LogHandler&);
|
|
LogHandler* operator = (const LogHandler&);
|
|
bool operator == (const LogHandler&);
|
|
|
|
const char* m_pDateTimeFormat;
|
|
int m_errorCode;
|
|
char* m_errorStr;
|
|
|
|
// for handling repeated messages
|
|
unsigned m_count_repeated_messages;
|
|
unsigned m_max_repeat_frequency;
|
|
time_t m_last_log_time;
|
|
char m_last_category[MAX_HEADER_LENGTH];
|
|
char m_last_message[MAX_LOG_MESSAGE_SIZE];
|
|
Logger::LoggerLevel m_last_level;
|
|
};
|
|
|
|
#endif
|