qstmgesturelib/qstmfilelogger/qstmfilelogger.cpp
changeset 16 3c88a81ff781
parent 3 0954f5dd2cd0
equal deleted inserted replaced
14:6aeb7a756187 16:3c88a81ff781
    21 #include <QDir>
    21 #include <QDir>
    22 #include <QApplication>
    22 #include <QApplication>
    23 #include <QDateTime>
    23 #include <QDateTime>
    24 #include "qstmfilelogger.h"
    24 #include "qstmfilelogger.h"
    25 
    25 
       
    26 #define BUF_SIZE  512*1004
    26 QStm_FileLogger* QStm_FileLogger::m_instance = 0;
    27 QStm_FileLogger* QStm_FileLogger::m_instance = 0;
    27 
    28 
    28 QStm_FileLogger::QStm_FileLogger()
    29 QStm_FileLogger::QStm_FileLogger() : QObject(), m_file(0), m_stream(0), m_enabled(0)
    29 {
    30 {
       
    31 #ifdef GESTURES_LOGTOFILE
    30 	QString fname = getLogFileName();
    32 	QString fname = getLogFileName();
    31 	m_file = new QFile(fname);
    33 	m_file = new QFile(fname);
    32 	m_file->open(QIODevice::ReadWrite | QIODevice::Text);
    34 	m_file->open(QIODevice::ReadWrite | QIODevice::Text);
    33 	m_stream = new QTextStream(m_file);
    35 	m_stream = new QTextStream(m_file);
       
    36 #else
       
    37 	m_buffer = new QString();
       
    38 	m_buffer->reserve(BUF_SIZE);
       
    39 	m_debug = new QDebug(m_buffer);
       
    40 	m_noDebug = new QNoDebug();
       
    41 	connect(&m_flushTimer, SIGNAL(timeout()), this, SLOT(doFlush()));
       
    42 	m_flushTimer.start(5000);
       
    43 #endif
    34 }
    44 }
    35 
    45 
    36 
    46 
    37 QStm_FileLogger::~QStm_FileLogger()
    47 QStm_FileLogger::~QStm_FileLogger()
    38 {
    48 {
       
    49 #ifdef GESTURES_LOGTOFILE
    39 	delete m_stream;
    50 	delete m_stream;
    40 	m_file->close();
    51 	m_file->close();
    41 	delete m_file;
    52 	delete m_file;
       
    53 #else
       
    54 	m_flushTimer.stop();
       
    55 	delete m_buffer;
       
    56 	delete m_debug;
       
    57 #endif
       
    58 }
       
    59 
       
    60 
       
    61 void QStm_FileLogger::enable(bool on) 
       
    62 { 
       
    63     m_enabled = on;
       
    64     if (m_enabled) {
       
    65         if (!m_buffer) {
       
    66             m_buffer = new QString();
       
    67             m_buffer->reserve(BUF_SIZE);   
       
    68         }
       
    69         m_flushTimer.start(5000);
       
    70     }
       
    71     else {
       
    72         delete m_buffer;
       
    73         m_buffer = NULL;
       
    74         m_flushTimer.stop();
       
    75     }
    42 }
    76 }
    43 
    77 
    44 QString QStm_FileLogger::getLogFileName()
    78 QString QStm_FileLogger::getLogFileName()
    45 {
    79 {
    46 #ifdef Q_OS_SYMBIAN	
    80 #ifdef Q_OS_SYMBIAN	
    47     QString path = "E:/Others/Logs";
    81     QString path = "c:/data/Others";
    48     QDir logdir(path);
    82     QDir logdir(path);
    49     logdir.mkpath(path);
    83     logdir.mkpath(path);
    50 #else 
    84 #else 
    51     QString path = QDir::tempPath();
    85     QString path = QDir::tempPath();
    52 #endif    
    86 #endif    
    61 }
    95 }
    62 
    96 
    63 
    97 
    64 void QStm_FileLogger::log(const char* fmt,...)
    98 void QStm_FileLogger::log(const char* fmt,...)
    65 {
    99 {
       
   100     if (logger()->isEnabled()) {
    66 	va_list list;
   101 	va_list list;
    67 	QString logStr;
   102 	QString logStr;
    68 	va_start(list, fmt);
   103 	va_start(list, fmt);
    69 	logStr.vsprintf(fmt, list);
   104 	logStr.vsprintf(fmt, list);
    70 	logger()->doLog(logStr);
   105 	logger()->doLog(logStr);
    71 	va_end(list);
   106 	va_end(list);
       
   107     }
    72 }
   108 }
    73 
   109 
    74 
   110 
    75 void QStm_FileLogger::log(const QString& text)
   111 void QStm_FileLogger::log(const QString& text)
    76 {
   112 {
       
   113     if (logger()->isEnabled()) {
    77 	logger()->doLog(text);
   114 	logger()->doLog(text);
       
   115     }
    78 }
   116 }
    79 
   117 
    80 void QStm_FileLogger::doLog(const QString& text) 
   118 void QStm_FileLogger::doLog(const QString& text) 
    81 { 
   119 {
    82 	*m_stream << QDateTime::currentDateTime().toString("dd-MM-yy hh:mm:ss.zzz") << " " << 
   120     if (m_enabled) {
       
   121 #ifdef GESTURES_LOGTOFILE
       
   122 	    *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
    83 			text << "\n"; 
   123 			text << "\n"; 
       
   124 #else
       
   125         if (m_buffer->size() >= BUF_SIZE) {
       
   126 	    //doFlush();
       
   127 	    }
       
   128         *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
       
   129                 text << "\n"; 
       
   130 #endif
       
   131     }
    84 }
   132 }
    85 
   133 
    86 void QStm_FileLogger::doLog(const char* text) 
   134 void QStm_FileLogger::doLog(const char* text) 
    87 { 
   135 { 
    88 	*m_stream << QDateTime::currentDateTime().toString("dd-MM-yy hh:mm:ss.zzz") << " " << 
   136     if (m_enabled) {
       
   137 #ifdef GESTURES_LOGTOFILE
       
   138 	    *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
    89 			text << "\n"; 
   139 			text << "\n"; 
       
   140 #else
       
   141 	    if (m_buffer->size() >= BUF_SIZE) {
       
   142 	        //doFlush();
       
   143 	    }
       
   144         *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
       
   145                 text << "\n"; 
       
   146 #endif
       
   147     }
    90 }
   148 }
    91  
   149 
       
   150 
       
   151 void QStm_FileLogger::doFlush() 
       
   152 { 
       
   153     if (m_enabled) {
       
   154 #ifdef GESTURES_LOGTOFILE
       
   155         if (m_stream) m_stream->flush();
       
   156 #else
       
   157         if (!m_buffer->isEmpty()) {
       
   158             qDebug() << *m_buffer;
       
   159             m_buffer->clear();
       
   160         }
       
   161 #endif
       
   162     }
       
   163 }
       
   164 
    92 QStm_FileLogger* QStm_FileLogger::logger()
   165 QStm_FileLogger* QStm_FileLogger::logger()
    93 {
   166 {
    94 	if (!m_instance) {
   167 	if (!m_instance) {
    95 		m_instance = new QStm_FileLogger();
   168 		m_instance = new QStm_FileLogger();
    96 	}
   169 	}
    97 	return m_instance;
   170 	return m_instance;
    98 }
   171 }
       
   172 
       
   173 QDebug QStm_FileLogger::debug() 
       
   174 { 
       
   175     if (logger()->isEnabled()) {
       
   176         *logger()->m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " "; 
       
   177     }
       
   178     return *logger()->m_debug;
       
   179 }