00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <config.h>
00021 #include "file.h"
00022
00023 using namespace std;
00024
00025 QueryLoggerFile::QueryLoggerFile()
00026 {
00027 _fh.setf(ios::fixed, ios::floatfield);
00028 _fh.precision(6);
00029 }
00030
00031 QueryLoggerFile::~QueryLoggerFile()
00032 {
00033 closeLogFile();
00034 }
00035
00036 bool QueryLoggerFile::logEvent(const event_t *event)
00037 {
00038 if (_fh.is_open())
00039 {
00040 _fh << "# start_ts=" << event->ts
00041 << "\n"
00042 << "# session_id=" << event->session_id
00043 << " query_id=" << event->query_id
00044 << " rows_examined=" << event->rows_examined
00045 << " rows_sent=" << event->rows_sent
00046 << " tmp_tables=" << event->tmp_tables
00047 << " warnings=" << event->warnings
00048 << "\n"
00049 << "# execution_time=" << event->execution_time
00050 << " lock_time=" << event->lock_time
00051 << " session_time=" << event->session_time
00052 << "\n"
00053 << "# error=" << event->error << "\n"
00054 << "# schema=\"" << event->schema << "\"\n"
00055 << event->query << ";\n#"
00056 << endl;
00057 }
00058 return false;
00059 }
00060
00061 bool QueryLoggerFile::openLogFile(const char *file)
00062 {
00063 closeLogFile();
00064
00065 _fh.open(file, ios::app);
00066 if (_fh.fail())
00067 return true;
00068
00069 return false;
00070 }
00071
00072 bool QueryLoggerFile::closeLogFile()
00073 {
00074 if (_fh.is_open())
00075 {
00076 _fh.close();
00077 if (_fh.fail())
00078 return true;
00079 }
00080
00081 return false;
00082 }