~ubuntu-branches/ubuntu/raring/quassel/raring-proposed

« back to all changes in this revision

Viewing changes to src/common/logger.h

  • Committer: Bazaar Package Importer
  • Author(s): Stephan Hermann
  • Date: 2008-08-27 16:13:38 UTC
  • mto: This revision was merged to the branch mainline in revision 5.
  • Revision ID: james.westby@ubuntu.com-20080827161338-wwscdevtkwm9lq93
Tags: upstream-0.3.0
ImportĀ upstreamĀ versionĀ 0.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19
19
 ***************************************************************************/
20
20
 
21
 
#ifndef _LOGGER_H_
22
 
#define _LOGGER_H_
23
 
 
24
 
#include <QObject>
25
 
 
26
 
class Logger : public QObject {
27
 
  Q_OBJECT
28
 
 
 
21
#ifndef LOGGER_H
 
22
#define LOGGER_H
 
23
 
 
24
#include "types.h"
 
25
 
 
26
#include <QString>
 
27
#include <QStringList>
 
28
#include <QTextStream>
 
29
 
 
30
class Logger {
29
31
  public:
30
 
    Logger();
31
 
    virtual ~Logger();
32
 
 
33
 
 
 
32
    enum LogLevel {
 
33
      DebugLevel,
 
34
      InfoLevel,
 
35
      WarningLevel,
 
36
      ErrorLevel
 
37
    };
 
38
 
 
39
    inline Logger(LogLevel level) : _stream(&_buffer, QIODevice::WriteOnly), _logLevel(level) {}
 
40
    ~Logger();
 
41
 
 
42
    template<typename T>
 
43
    inline Logger &operator<<(const T &value) { _stream << value << " "; return *this; }
 
44
    inline Logger &operator<<(const QStringList & t) { _stream << t.join(" ") << " "; return *this; }
 
45
    inline Logger &operator<<(bool t) { _stream << (t ? "true" : "false") << " "; return *this; }
34
46
 
35
47
  private:
36
 
    //void messageHandler(QtMsgType type, const char *msg);
37
 
};
38
 
 
39
 
 
40
 
 
 
48
    void log();
 
49
    QTextStream _stream;
 
50
    QString _buffer;
 
51
    LogLevel _logLevel;
 
52
};
 
53
 
 
54
class quDebug : public Logger {
 
55
  public:
 
56
    inline quDebug() : Logger(Logger::DebugLevel) {}
 
57
};
 
58
 
 
59
class quInfo : public Logger {
 
60
  public:
 
61
    inline quInfo() : Logger(Logger::InfoLevel) {}
 
62
};
 
63
 
 
64
class quWarning : public Logger {
 
65
  public:
 
66
    inline quWarning() : Logger(Logger::WarningLevel) {}
 
67
};
 
68
 
 
69
class quError : public Logger {
 
70
  public:
 
71
    inline quError() : Logger(Logger::ErrorLevel) {}
 
72
};
41
73
#endif