Jump to content

Simple-logger

From Qt Wiki
Revision as of 09:44, 24 February 2015 by Maintenance script (talk | contribs)

h1. Simple Logger

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

<br />QPlainTextEdit *editor = new QPlainTextEdit(this);<br />QString fileName = &quot;c:.txt&amp;quot;;<br />Logger *logger = new Logger(this, fileName, editor);<br />logger.write(&quot;Hello Qt&amp;quot;);<br />

Logger.h

<br />#ifndef LOGGER_H<br />#define LOGGER_H

#include &lt;QObject&amp;gt;<br />#include &lt;QPlainTextEdit&amp;gt;<br />#include &lt;QFile&amp;gt;<br />#include &lt;QTextStream&amp;gt;<br />#include &lt;QDateTime&amp;gt;

class Logger : public QObject<br />{<br /> Q_OBJECT<br />public:<br /> explicit Logger(QObject *parent, QString fileName, QPlainTextEdit *editor = 0);<br /> ~Logger();<br /> void setShowDateTime(bool value);

private:<br /> QFile *file;<br /> QPlainTextEdit *m_editor;<br /> bool m_showDate;

signals:

public slots:<br /> void write(const QString &amp;value);

};

#endif // LOGGER_H<br />

Logger.cpp

<br />#include &quot;Logger.h&amp;quot;

Logger::Logger(QObject *parent, QString fileName,<br /> QPlainTextEdit *editor) : QObject(parent) {

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

void Logger::write(const QString &amp;value) {<br /> QString text = value;// + &quot;&quot;;<br /> if (m_showDate)<br /> text = QDateTime::currentDateTime().toString(&quot;dd.MM.yyyy hh:mm:ss &quot;) + text;<br /> QTextStream out(file);<br /> out.setCodec(&quot;UTF-8&amp;quot;);<br /> if (file != 0) {<br /> out &lt;&lt; text;<br /> }<br /> if (m_editor != 0)<br /> m_editor-&gt;appendPlainText(text);<br />}

void Logger::setShowDateTime(bool value) {<br /> m_showDate = value;<br />}

Logger::~Logger() {<br /> if (file != 0)<br /> file-&gt;close();<br />}<br />