mirror of
https://github.com/chenx-dust/EZ4Connect.git
synced 2026-09-20 10:23:33 +08:00
77 lines
1.5 KiB
C++
77 lines
1.5 KiB
C++
#include "applicationlogfile.h"
|
|
|
|
#include <QCoreApplication>
|
|
#include <QDateTime>
|
|
#include <QMetaObject>
|
|
#include <QThread>
|
|
|
|
namespace
|
|
{
|
|
QString currentTimestamp()
|
|
{
|
|
return QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss");
|
|
}
|
|
}
|
|
|
|
ApplicationLogFile::ApplicationLogFile(const QString &filePath, QObject *parent)
|
|
: QObject(parent),
|
|
file(filePath)
|
|
{
|
|
if (file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
|
|
{
|
|
stream.setDevice(&file);
|
|
stream.setEncoding(QStringConverter::Utf8);
|
|
appendEntry(
|
|
"=== Log started at " + currentTimestamp()
|
|
+ " with " + QCoreApplication::applicationName()
|
|
+ " " + QCoreApplication::applicationVersion()
|
|
+ " ==="
|
|
);
|
|
}
|
|
}
|
|
|
|
ApplicationLogFile::~ApplicationLogFile()
|
|
{
|
|
if (file.isOpen())
|
|
{
|
|
appendEntry("=== Log ended at " + currentTimestamp() + " ===");
|
|
stream.flush();
|
|
file.close();
|
|
}
|
|
}
|
|
|
|
QString ApplicationLogFile::filePath() const
|
|
{
|
|
return file.fileName();
|
|
}
|
|
|
|
bool ApplicationLogFile::isOpen() const
|
|
{
|
|
return file.isOpen();
|
|
}
|
|
|
|
void ApplicationLogFile::appendEntry(const QString &entry)
|
|
{
|
|
if (QThread::currentThread() != thread())
|
|
{
|
|
QMetaObject::invokeMethod(
|
|
this,
|
|
[this, entry]() { appendEntry(entry); },
|
|
Qt::QueuedConnection
|
|
);
|
|
return;
|
|
}
|
|
|
|
if (!file.isOpen())
|
|
{
|
|
return;
|
|
}
|
|
|
|
stream << entry;
|
|
if (!entry.endsWith('\n'))
|
|
{
|
|
stream << '\n';
|
|
}
|
|
stream.flush();
|
|
}
|