Simple-logger

From Qt Wiki
Jump to: navigation, search

This code shows as possibly of logging with recording to the file. Also if necessary it is possible show logging information in QPlainTextEdit

Example of using

QPlainTextEdit *editor = new QPlainTextEdit(this); QString fileName = "c:.txt"; Logger *logger = new Logger(this, fileName, editor); logger.write("Hello Qt");

Logger.h

  1. ifndef LOGGER_H
  2. define LOGGER_H
  1. include <QObject>
  2. include <QPlainTextEdit>
  3. include <QFile>
  4. include <QTextStream>
  5. include <QDateTime>

class Logger : public QObject {

Q_OBJECT

public:

explicit Logger(QObject *parent, QString fileName, QPlainTextEdit *editor = 0);
~Logger();
void setShowDateTime(bool value);

private:

QFile *file;
QPlainTextEdit *m_editor;
bool m_showDate;

signals:

public slots:

void write(const QString &value);

};

  1. endif // LOGGER_H

Logger.cpp

  1. include "Logger.h"

Logger::Logger(QObject *parent, QString fileName, QPlainTextEdit *editor) : QObject(parent) {

m_editor = editor;
m_showDate = true;
if (!fileName.isEmpty()) {
 file = new QFile;
 file->setFileName(fileName);
 file->open(QIODevice::Append | QIODevice::Text);
}

}

void Logger::write(const QString &value) {

QString text = value;// + "";
if (m_showDate)
 text = QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm:ss ") + text;
QTextStream out(file);
out.setCodec("UTF-8");
if (file != 0) {
 out << text;
}
if (m_editor != 0)
 m_editor->appendPlainText(text);

}

void Logger::setShowDateTime(bool value) {

m_showDate = value;

}

Logger::~Logger() {

if (file != 0)
file->close();

}