QueryLog implements the query_log plugin. More...
#include <query_log.h>
Public Types | |
enum | EventType { BEFORE_CREATE_DATABASE, AFTER_CREATE_DATABASE, BEFORE_DROP_DATABASE, AFTER_DROP_DATABASE, CONNECT_SESSION, DISCONNECT_SESSION, AFTER_STATEMENT, BEFORE_STATEMENT, BEFORE_DROP_TABLE, AFTER_DROP_TABLE, BEFORE_RENAME_TABLE, AFTER_RENAME_TABLE, BEFORE_INSERT_RECORD, AFTER_INSERT_RECORD, BEFORE_UPDATE_RECORD, AFTER_UPDATE_RECORD, BEFORE_DELETE_RECORD, AFTER_DELETE_RECORD, MAX_EVENT_COUNT } |
typedef std::pair< const std::string, const std::string > | map_key |
typedef std::map< const map_key, plugin::Plugin * > | map |
typedef std::vector< Plugin * > | vector |
Public Member Functions | |
QueryLog (bool enabled, QueryLoggerFile *logger_file) | |
void | registerSessionEventsDo (Session &session, EventObserverList &observers) |
bool | observeEventDo (EventData &) |
bool | afterStatement (AfterStatementEventData &data) |
virtual void | registerTableEventsDo (TableShare &, EventObserverList &) |
virtual void | registerSchemaEventsDo (const std::string &, EventObserverList &) |
void | registerEvent (EventObserverList &observers, EventType event, int32_t position=0) |
virtual void | shutdownPlugin () |
virtual void | prime () |
virtual void | startup (drizzled::Session &) |
void | activate () |
void | deactivate () |
bool | isActive () const |
const std::string & | getName () const |
void | setModule (module::Module *module) |
const std::string & | getTypeName () const |
virtual bool | removeLast () const |
const std::string & | getModuleName () const |
Static Public Member Functions | |
static const char * | eventName (EventType event) |
static bool | addPlugin (EventObserver *handler) |
static void | removePlugin (EventObserver *handler) |
static void | registerTableEvents (TableShare &table_share) |
static void | deregisterTableEvents (TableShare &table_share) |
static void | registerSchemaEvents (Session &session, const std::string &db) |
static void | deregisterSchemaEvents (EventObserverList *observers) |
static void | registerSessionEvents (Session &session) |
static void | deregisterSessionEvents (EventObserverList *observers) |
static bool | beforeDropTable (Session &session, const drizzled::identifier::Table &table) |
static bool | afterDropTable (Session &session, const drizzled::identifier::Table &table, int err) |
static bool | beforeRenameTable (Session &session, const drizzled::identifier::Table &from, const drizzled::identifier::Table &to) |
static bool | afterRenameTable (Session &session, const drizzled::identifier::Table &from, const drizzled::identifier::Table &to, int err) |
static bool | connectSession (Session &session) |
static bool | disconnectSession (Session &session) |
static bool | beforeStatement (Session &session) |
static bool | afterStatement (Session &session) |
static bool | beforeInsertRecord (Table &table, unsigned char *buf) |
static bool | afterInsertRecord (Table &table, const unsigned char *buf, int err) |
static bool | beforeDeleteRecord (Table &table, const unsigned char *buf) |
static bool | afterDeleteRecord (Table &table, const unsigned char *buf, int err) |
static bool | beforeUpdateRecord (Table &table, const unsigned char *old_data, unsigned char *new_data) |
static bool | afterUpdateRecord (Table &table, const unsigned char *old_data, unsigned char *new_data, int err) |
static bool | beforeCreateDatabase (Session &session, const std::string &db) |
static bool | afterCreateDatabase (Session &session, const std::string &db, int err) |
static bool | beforeDropDatabase (Session &session, const std::string &db) |
static bool | afterDropDatabase (Session &session, const std::string &db, int err) |
static const EventObserverVector & | getEventObservers (void) |
Public Attributes | |
bool | sysvar_enabled |
bool | sysvar_file_enabled |
std::string | sysvar_file |
uint32_constraint | sysvar_threshold_execution_time |
uint32_constraint | sysvar_threshold_lock_time |
uint32_constraint | sysvar_threshold_rows_examined |
uint32_constraint | sysvar_threshold_rows_sent |
uint32_constraint | sysvar_threshold_tmp_tables |
uint32_constraint | sysvar_threshold_warnings |
uint32_constraint | sysvar_threshold_session_time |
Private Attributes | |
QueryLoggerFile * | _logger_file |
event_t | _event |
QueryLog implements the query_log plugin.
This is our event observer plugin subclass that sits between Drizzle and logger classes like QueryLoggerFile. This class encapsulates and manages data associated with the plugin: system variables and incoming events. The future plan is to have other logger classes, like QueryLoggerTable or QueryLoggerUDPSocket. So implemeting those should be easy because this class abstracts plugin data management from actual logging: it gets events from Drizzle, filters and prepares them, then sends them to logger classes which only have to log them.
Definition at line 43 of file query_log.h.
bool QueryLog::afterStatement | ( | AfterStatementEventData & | data) |
Time values, first in microseconds so we can check the thresholds.
Check thresholds as soon as possible, return early if possible. This avoid unnecessary work; i.e. don't construct the whole event only to throw it away at the end because it fails a threshold.
Convert from microseconds to seconds, e.g. 42 to 0.000042 This is done for the user who may read the log. It's a lot easier to see half a second as 0.5 than 500000.
Integer values
Boolean values, as strings
String values, may be blank
The query string
Timestamp values, convert from microseconds from epoch to ISO timestamp like 2002-01-31T10:00:01.123456
Definition at line 65 of file query_log.cc.
References drizzled::Session::command, drizzled::Session::examined_row_count, drizzled::Session::getQueryId(), drizzled::Session::getSessionId(), drizzled::Session::is_error(), and drizzled::Session::sent_row_count.
bool drizzled::plugin::QueryLog::sysvar_enabled |
These are the query_log system variables. So sysvar_enabled is query_log_enabled in SHOW VARIABLES, etc. They are all global and dynamic.
Definition at line 56 of file query_log.h.