--- a/qstmgesturelib/qstmfilelogger/qstmfilelogger.cpp Thu Sep 23 15:32:11 2010 -0400
+++ b/qstmgesturelib/qstmfilelogger/qstmfilelogger.cpp Fri Oct 15 17:30:59 2010 -0400
@@ -23,28 +23,62 @@
#include <QDateTime>
#include "qstmfilelogger.h"
+#define BUF_SIZE 512*1004
QStm_FileLogger* QStm_FileLogger::m_instance = 0;
-QStm_FileLogger::QStm_FileLogger()
+QStm_FileLogger::QStm_FileLogger() : QObject(), m_file(0), m_stream(0), m_enabled(0)
{
+#ifdef GESTURES_LOGTOFILE
QString fname = getLogFileName();
m_file = new QFile(fname);
m_file->open(QIODevice::ReadWrite | QIODevice::Text);
m_stream = new QTextStream(m_file);
+#else
+ m_buffer = new QString();
+ m_buffer->reserve(BUF_SIZE);
+ m_debug = new QDebug(m_buffer);
+ m_noDebug = new QNoDebug();
+ connect(&m_flushTimer, SIGNAL(timeout()), this, SLOT(doFlush()));
+ m_flushTimer.start(5000);
+#endif
}
QStm_FileLogger::~QStm_FileLogger()
{
+#ifdef GESTURES_LOGTOFILE
delete m_stream;
m_file->close();
delete m_file;
+#else
+ m_flushTimer.stop();
+ delete m_buffer;
+ delete m_debug;
+#endif
+}
+
+
+void QStm_FileLogger::enable(bool on)
+{
+ m_enabled = on;
+ if (m_enabled) {
+ if (!m_buffer) {
+ m_buffer = new QString();
+ m_buffer->reserve(BUF_SIZE);
+ }
+ m_flushTimer.start(5000);
+ }
+ else {
+ delete m_buffer;
+ m_buffer = NULL;
+ m_flushTimer.stop();
+ }
}
QString QStm_FileLogger::getLogFileName()
{
#ifdef Q_OS_SYMBIAN
- QString path = "E:/Others/Logs";
+ QString path = "c:/data/Others";
QDir logdir(path);
logdir.mkpath(path);
#else
@@ -63,32 +97,71 @@
void QStm_FileLogger::log(const char* fmt,...)
{
+ if (logger()->isEnabled()) {
va_list list;
QString logStr;
va_start(list, fmt);
logStr.vsprintf(fmt, list);
logger()->doLog(logStr);
va_end(list);
+ }
}
void QStm_FileLogger::log(const QString& text)
{
+ if (logger()->isEnabled()) {
logger()->doLog(text);
+ }
}
void QStm_FileLogger::doLog(const QString& text)
-{
- *m_stream << QDateTime::currentDateTime().toString("dd-MM-yy hh:mm:ss.zzz") << " " <<
+{
+ if (m_enabled) {
+#ifdef GESTURES_LOGTOFILE
+ *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " <<
text << "\n";
+#else
+ if (m_buffer->size() >= BUF_SIZE) {
+ //doFlush();
+ }
+ *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " <<
+ text << "\n";
+#endif
+ }
}
void QStm_FileLogger::doLog(const char* text)
{
- *m_stream << QDateTime::currentDateTime().toString("dd-MM-yy hh:mm:ss.zzz") << " " <<
+ if (m_enabled) {
+#ifdef GESTURES_LOGTOFILE
+ *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " <<
text << "\n";
+#else
+ if (m_buffer->size() >= BUF_SIZE) {
+ //doFlush();
+ }
+ *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " <<
+ text << "\n";
+#endif
+ }
}
-
+
+
+void QStm_FileLogger::doFlush()
+{
+ if (m_enabled) {
+#ifdef GESTURES_LOGTOFILE
+ if (m_stream) m_stream->flush();
+#else
+ if (!m_buffer->isEmpty()) {
+ qDebug() << *m_buffer;
+ m_buffer->clear();
+ }
+#endif
+ }
+}
+
QStm_FileLogger* QStm_FileLogger::logger()
{
if (!m_instance) {
@@ -96,3 +169,11 @@
}
return m_instance;
}
+
+QDebug QStm_FileLogger::debug()
+{
+ if (logger()->isEnabled()) {
+ *logger()->m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " ";
+ }
+ return *logger()->m_debug;
+}