looqs/cli/logger.h

49 rader
809 B
C++

#ifndef LOGGER_H
#define LOGGER_H
#include <QFile>
#include <QDebug>
#include <QMutex>
class Logger
{
private:
QDebug *out;
QMutex mutex;
QFile *file;
public:
Logger(QFile *file);
Logger(Logger &&o);
template<class T>
Logger &operator <<(const T &val)
{
QMutexLocker locker(&this->mutex);
*out << val;
//TODO: QDebug may not have flushed yet
file->flush();
return *this;
}
template<class T>
Logger &operator <<(const T *val)
{
QMutexLocker locker(&this->mutex);
*out << val;
//TODO: QDebug may not have flushed yet
file->flush();
return *this;
}
~Logger()
{
delete out;
}
static Logger& error();
static Logger& info();
};
#endif // LOGGER_H