qstmgesturelib/qstmfilelogger/qstmfilelogger.cpp
author hgs
Fri, 15 Oct 2010 17:30:59 -0400
changeset 16 3c88a81ff781
parent 3 0954f5dd2cd0
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
*
3
hgs
parents: 0
diff changeset
     5
* This program is free software: you can redistribute it and/or modify
hgs
parents: 0
diff changeset
     6
* it under the terms of the GNU Lesser General Public License as published by
hgs
parents: 0
diff changeset
     7
* the Free Software Foundation, version 2.1 of the License.
hgs
parents: 0
diff changeset
     8
* 
hgs
parents: 0
diff changeset
     9
* This program is distributed in the hope that it will be useful,
hgs
parents: 0
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents: 0
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
hgs
parents: 0
diff changeset
    12
* GNU Lesser General Public License for more details.
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
3
hgs
parents: 0
diff changeset
    14
* You should have received a copy of the GNU Lesser General Public License
hgs
parents: 0
diff changeset
    15
* along with this program.  If not, 
hgs
parents: 0
diff changeset
    16
* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*
3
hgs
parents: 0
diff changeset
    18
* Description:
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
*
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
*/
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <QDir>
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <QApplication>
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <QDateTime>
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include "qstmfilelogger.h"
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
16
hgs
parents: 3
diff changeset
    26
#define BUF_SIZE  512*1004
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
QStm_FileLogger* QStm_FileLogger::m_instance = 0;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
16
hgs
parents: 3
diff changeset
    29
QStm_FileLogger::QStm_FileLogger() : QObject(), m_file(0), m_stream(0), m_enabled(0)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
{
16
hgs
parents: 3
diff changeset
    31
#ifdef GESTURES_LOGTOFILE
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
	QString fname = getLogFileName();
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
	m_file = new QFile(fname);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
	m_file->open(QIODevice::ReadWrite | QIODevice::Text);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
	m_stream = new QTextStream(m_file);
16
hgs
parents: 3
diff changeset
    36
#else
hgs
parents: 3
diff changeset
    37
	m_buffer = new QString();
hgs
parents: 3
diff changeset
    38
	m_buffer->reserve(BUF_SIZE);
hgs
parents: 3
diff changeset
    39
	m_debug = new QDebug(m_buffer);
hgs
parents: 3
diff changeset
    40
	m_noDebug = new QNoDebug();
hgs
parents: 3
diff changeset
    41
	connect(&m_flushTimer, SIGNAL(timeout()), this, SLOT(doFlush()));
hgs
parents: 3
diff changeset
    42
	m_flushTimer.start(5000);
hgs
parents: 3
diff changeset
    43
#endif
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
QStm_FileLogger::~QStm_FileLogger()
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
{
16
hgs
parents: 3
diff changeset
    49
#ifdef GESTURES_LOGTOFILE
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
	delete m_stream;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
	m_file->close();
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
	delete m_file;
16
hgs
parents: 3
diff changeset
    53
#else
hgs
parents: 3
diff changeset
    54
	m_flushTimer.stop();
hgs
parents: 3
diff changeset
    55
	delete m_buffer;
hgs
parents: 3
diff changeset
    56
	delete m_debug;
hgs
parents: 3
diff changeset
    57
#endif
hgs
parents: 3
diff changeset
    58
}
hgs
parents: 3
diff changeset
    59
hgs
parents: 3
diff changeset
    60
hgs
parents: 3
diff changeset
    61
void QStm_FileLogger::enable(bool on) 
hgs
parents: 3
diff changeset
    62
{ 
hgs
parents: 3
diff changeset
    63
    m_enabled = on;
hgs
parents: 3
diff changeset
    64
    if (m_enabled) {
hgs
parents: 3
diff changeset
    65
        if (!m_buffer) {
hgs
parents: 3
diff changeset
    66
            m_buffer = new QString();
hgs
parents: 3
diff changeset
    67
            m_buffer->reserve(BUF_SIZE);   
hgs
parents: 3
diff changeset
    68
        }
hgs
parents: 3
diff changeset
    69
        m_flushTimer.start(5000);
hgs
parents: 3
diff changeset
    70
    }
hgs
parents: 3
diff changeset
    71
    else {
hgs
parents: 3
diff changeset
    72
        delete m_buffer;
hgs
parents: 3
diff changeset
    73
        m_buffer = NULL;
hgs
parents: 3
diff changeset
    74
        m_flushTimer.stop();
hgs
parents: 3
diff changeset
    75
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
QString QStm_FileLogger::getLogFileName()
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
{
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
#ifdef Q_OS_SYMBIAN	
16
hgs
parents: 3
diff changeset
    81
    QString path = "c:/data/Others";
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
    QDir logdir(path);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
    logdir.mkpath(path);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
#else 
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
    QString path = QDir::tempPath();
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
#endif    
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
    
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
    QString appName = qApp->applicationFilePath();
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
    QFileInfo fi(appName);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
    QString baseName = fi.baseName();
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
    QString fileName = path % "/" % baseName % 
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
    		           QDateTime::currentDateTime().toString("ddMMyy_hhmmss") % 
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
    		           ".log";
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
    return fileName;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
void QStm_FileLogger::log(const char* fmt,...)
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
{
16
hgs
parents: 3
diff changeset
   100
    if (logger()->isEnabled()) {
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
	va_list list;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
	QString logStr;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
	va_start(list, fmt);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
	logStr.vsprintf(fmt, list);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
	logger()->doLog(logStr);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
	va_end(list);
16
hgs
parents: 3
diff changeset
   107
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
void QStm_FileLogger::log(const QString& text)
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
{
16
hgs
parents: 3
diff changeset
   113
    if (logger()->isEnabled()) {
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
	logger()->doLog(text);
16
hgs
parents: 3
diff changeset
   115
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
void QStm_FileLogger::doLog(const QString& text) 
16
hgs
parents: 3
diff changeset
   119
{
hgs
parents: 3
diff changeset
   120
    if (m_enabled) {
hgs
parents: 3
diff changeset
   121
#ifdef GESTURES_LOGTOFILE
hgs
parents: 3
diff changeset
   122
	    *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
			text << "\n"; 
16
hgs
parents: 3
diff changeset
   124
#else
hgs
parents: 3
diff changeset
   125
        if (m_buffer->size() >= BUF_SIZE) {
hgs
parents: 3
diff changeset
   126
	    //doFlush();
hgs
parents: 3
diff changeset
   127
	    }
hgs
parents: 3
diff changeset
   128
        *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
hgs
parents: 3
diff changeset
   129
                text << "\n"; 
hgs
parents: 3
diff changeset
   130
#endif
hgs
parents: 3
diff changeset
   131
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
void QStm_FileLogger::doLog(const char* text) 
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
{ 
16
hgs
parents: 3
diff changeset
   136
    if (m_enabled) {
hgs
parents: 3
diff changeset
   137
#ifdef GESTURES_LOGTOFILE
hgs
parents: 3
diff changeset
   138
	    *m_stream << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
			text << "\n"; 
16
hgs
parents: 3
diff changeset
   140
#else
hgs
parents: 3
diff changeset
   141
	    if (m_buffer->size() >= BUF_SIZE) {
hgs
parents: 3
diff changeset
   142
	        //doFlush();
hgs
parents: 3
diff changeset
   143
	    }
hgs
parents: 3
diff changeset
   144
        *m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " " << 
hgs
parents: 3
diff changeset
   145
                text << "\n"; 
hgs
parents: 3
diff changeset
   146
#endif
hgs
parents: 3
diff changeset
   147
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
}
16
hgs
parents: 3
diff changeset
   149
hgs
parents: 3
diff changeset
   150
hgs
parents: 3
diff changeset
   151
void QStm_FileLogger::doFlush() 
hgs
parents: 3
diff changeset
   152
{ 
hgs
parents: 3
diff changeset
   153
    if (m_enabled) {
hgs
parents: 3
diff changeset
   154
#ifdef GESTURES_LOGTOFILE
hgs
parents: 3
diff changeset
   155
        if (m_stream) m_stream->flush();
hgs
parents: 3
diff changeset
   156
#else
hgs
parents: 3
diff changeset
   157
        if (!m_buffer->isEmpty()) {
hgs
parents: 3
diff changeset
   158
            qDebug() << *m_buffer;
hgs
parents: 3
diff changeset
   159
            m_buffer->clear();
hgs
parents: 3
diff changeset
   160
        }
hgs
parents: 3
diff changeset
   161
#endif
hgs
parents: 3
diff changeset
   162
    }
hgs
parents: 3
diff changeset
   163
}
hgs
parents: 3
diff changeset
   164
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
QStm_FileLogger* QStm_FileLogger::logger()
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
{
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
	if (!m_instance) {
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
		m_instance = new QStm_FileLogger();
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
	}
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
	return m_instance;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
}
16
hgs
parents: 3
diff changeset
   172
hgs
parents: 3
diff changeset
   173
QDebug QStm_FileLogger::debug() 
hgs
parents: 3
diff changeset
   174
{ 
hgs
parents: 3
diff changeset
   175
    if (logger()->isEnabled()) {
hgs
parents: 3
diff changeset
   176
        *logger()->m_debug << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << " "; 
hgs
parents: 3
diff changeset
   177
    }
hgs
parents: 3
diff changeset
   178
    return *logger()->m_debug;
hgs
parents: 3
diff changeset
   179
}