qstmgesturelib/qstmfilelogger/qstmfilelogger.h
changeset 16 3c88a81ff781
parent 3 0954f5dd2cd0
equal deleted inserted replaced
14:6aeb7a756187 16:3c88a81ff781
    25 #include <qstmgesturedefs.h>
    25 #include <qstmgesturedefs.h>
    26 #include <QFile>
    26 #include <QFile>
    27 #include <QDebug>
    27 #include <QDebug>
    28 #include <QString>
    28 #include <QString>
    29 #include <QStringBuilder>
    29 #include <QStringBuilder>
       
    30 #include <QDateTime>
       
    31 #include <QTimer>
    30 
    32 
    31 #define LOGFLUSH            QStm_FileLogger::flush()
    33 #define LOGFLUSH            QStm_FileLogger::flush()
    32 #define LOGCLOSE            QStm_FileLogger::close()
    34 #define LOGCLOSE            QStm_FileLogger::close()
    33 #ifdef Q_OS_WIN
    35 #if defined(Q_OS_WIN) && defined(_MSC_VER)
    34 #define LOGARG()
    36 #define LOGARG()
    35 #else
    37 #else
    36 #define LOGARG(txt,parm...) {QStm_FileLogger::log(txt, parm);}
    38 #define LOGARG(txt,parm...) {QStm_FileLogger::log(txt, parm);}
    37 #endif
    39 #endif
    38 #define LOGTXT(txt)         {QStm_FileLogger::log("%s",txt);}
    40 #define LOGTXT(txt)         {QStm_FileLogger::log("%s",txt);}
    39 #define LOGERR(txt,err)     if (!err) {} else {LOGARG(txt, err);}
    41 #define LOGERR(txt,err)     if (!err) {} else {LOGARG(txt, err);}
    40 #define LOGCALL(exp)        {LOGARG("Calling \"%s\"", #exp); exp; LOGARG("Call to \"%s\" passed.", #exp);}
    42 #define LOGCALL(exp)        {LOGARG("Calling \"%s\"", #exp); exp; LOGARG("Call to \"%s\" passed.", #exp);}
    41 #define LOGENTER            LOGARG("%s start", __PRETTY_FUNCTION__)
    43 #define LOGENTER            LOGARG("%s start", __PRETTY_FUNCTION__)
    42 #define LOGEXIT             LOGARG("%s end", __PRETTY_FUNCTION__)
    44 #define LOGEXIT             LOGARG("%s end", __PRETTY_FUNCTION__)
    43 #define LOGMEM(ptr)         LOGARG("%s [0x%x]", #ptr, (uint)ptr)
    45 #define LOGMEM(ptr)         LOGARG("%s [0x%x]", #ptr, (uint)ptr)
       
    46 #define qstmDebug()         QStm_FileLogger::logger()->isEnabled() ? QStm_FileLogger::debug() : QStm_FileLogger::noDebug()
       
    47 #define qstmIODevice()      QStm_FileLogger::ioDevice()
       
    48 #define qstmEnableDebug(on) QStm_FileLogger::logger()->enable(on);
    44 
    49 
    45 class QSTMGESTURELIB_EXPORT QStm_FileLogger
    50 
       
    51 class QSTMGESTURELIB_EXPORT QStm_FileLogger : public QObject
    46 {
    52 {
       
    53     Q_OBJECT
    47 public:
    54 public:
    48 	static void log(const QString& text);
    55 	static void log(const QString& text);
    49 	static void log(const char* fmt,...);
    56 	static void log(const char* fmt,...);
    50 	static void close() { logger()->doClose(); }
    57 	static void close() { logger()->doClose(); }
    51 	static void flush() { logger()->doFlush(); }
    58 	static void flush() { logger()->doFlush(); }
    52 	static QStm_FileLogger* logger();
    59 	static QStm_FileLogger* logger();
    53 	static QIODevice* ioDevice() { return logger()->m_file; }
    60 	static QIODevice* ioDevice() { return logger()->m_file; }
       
    61 	static QDebug debug();
       
    62 	static QNoDebug noDebug() { return *logger()->m_noDebug; }
       
    63 	void enable(bool on);
       
    64 	bool isEnabled() { return m_enabled; }
    54 private:
    65 private:
    55     QStm_FileLogger();
    66     QStm_FileLogger();
    56     ~QStm_FileLogger();
    67     ~QStm_FileLogger();
    57     void doLog(const QString& text);
    68     void doLog(const QString& text);
    58     void doLog(const char* text);
    69     void doLog(const char* text);
    59     void doClose() { m_file->close(); }
    70     void doClose() { if (m_file) m_file->close(); }
    60     void doFlush() { m_stream->flush(); }   
    71     
    61     QString getLogFileName();
    72     QString getLogFileName();
    62 
    73 public slots:
       
    74     void doFlush();   
    63 private:
    75 private:
    64     QFile*                     m_file;    
    76     QFile*                     m_file;    
    65     QTextStream*               m_stream;
    77     QTextStream*               m_stream;
    66     static QStm_FileLogger*    m_instance;
    78     static QStm_FileLogger*    m_instance;
       
    79     bool                       m_enabled;
       
    80     QDebug*                    m_debug;
       
    81     QNoDebug*                  m_noDebug;
       
    82     QString*                   m_buffer;
       
    83     QTimer                     m_flushTimer;
    67 };
    84 };
    68 
    85 
    69 
    86 
    70 
    87 
    71 #endif /* QSTMFILELOGGER_H_ */
    88 #endif /* QSTMFILELOGGER_H_ */