void MySQL_Logger::flush() { wrlock(); if (logfile) { logfile->flush(); } wrunlock(); }
void MySQL_Logger::log_request(MySQL_Session *sess) { if (enabled==false) return; if (logfile==NULL) return; MySQL_Connection_userinfo *ui=sess->client_myds->myconn->userinfo; MySQL_Event me(sess->thread_session_id,ui->username,ui->schemaname,sess->CurrentQuery.start_time,sess->CurrentQuery.end_time,GloQPro->get_digest(&sess->CurrentQuery.QueryParserArgs)); char *c=(char *)sess->CurrentQuery.QueryPointer; if (c) { me.set_query(c,sess->CurrentQuery.QueryLength); } else { me.set_query("",0); } /* ev.set_server(""); ev.set_client(""); */ wrlock(); me.write(logfile); unsigned long curpos=logfile->tellp(); if (curpos > max_log_file_size) { flush_log_unlocked(); } wrunlock(); }
void MySQL_Logger::set_base_filename() { // if filename is the same, return wrlock(); max_log_file_size=mysql_thread___eventslog_filesize; if (strcmp(base_filename,mysql_thread___eventslog_filename)==0) { wrunlock(); return; } // close current log close_log_unlocked(); // set file id to 0 , so that find_next_id() will be called log_file_id=0; free(base_filename); base_filename=strdup(mysql_thread___eventslog_filename); if (strlen(base_filename)) { enabled=true; open_log_unlocked(); } else { enabled=false; } wrunlock(); }
inline void unlock() const { if (!writing) rdunlock(); else wrunlock(); }
void MySQL_Logger::flush_log() { wrlock(); flush_log_unlocked(); wrunlock(); }