113 lines
2.6 KiB
C++
113 lines
2.6 KiB
C++
#include "LogParser.h"
|
|
|
|
#include <QDir>
|
|
#include <QFile>
|
|
|
|
#include <QDebug>
|
|
|
|
LogParser::LogParser(QObject* parent)
|
|
: QObject{parent}
|
|
{
|
|
logFolder = "C:/Users/Yury/Documents/M1300LogFolder";
|
|
}
|
|
|
|
LogParser::~LogParser()
|
|
{
|
|
}
|
|
|
|
void LogParser::setLogFolder(const QString& folder)
|
|
{
|
|
logFolder = folder;
|
|
}
|
|
|
|
void LogParser::setStartDateTime(const QDateTime& dateTime)
|
|
{
|
|
startDateTime = dateTime;
|
|
}
|
|
|
|
void LogParser::setEndDateTime(const QDateTime& dateTime)
|
|
{
|
|
endDateTime = dateTime;
|
|
}
|
|
|
|
QString LogParser::getLogFolder() const
|
|
{
|
|
return logFolder;
|
|
}
|
|
|
|
QDateTime LogParser::getStartDateTime() const
|
|
{
|
|
return startDateTime;
|
|
}
|
|
|
|
QDateTime LogParser::getEndDateTime() const
|
|
{
|
|
return endDateTime;
|
|
}
|
|
|
|
QStringList LogParser::logFilesByDateTime() const
|
|
{
|
|
QStringList files;
|
|
for (const auto& fileInfo: QDir(logFolder).entryInfoList())
|
|
{
|
|
const auto fileTime = fileInfo.baseName();
|
|
auto date = QDateTime::fromString(fileTime, "yyMMdd_hhmmss");
|
|
if (date.date().year() < 2000)
|
|
{
|
|
date = date.addYears(100);
|
|
}
|
|
|
|
if (date.isValid() && date >= startDateTime && date <= endDateTime)
|
|
{
|
|
files.append(fileInfo.absoluteFilePath());
|
|
}
|
|
}
|
|
|
|
return files;
|
|
}
|
|
|
|
QList<DataTypes::LogMessage> LogParser::logMessagesByDateTime() const
|
|
{
|
|
QList<DataTypes::LogMessage> logMessages;
|
|
|
|
const auto logFiles = logFilesByDateTime();
|
|
for (const auto& logFile: logFiles)
|
|
{
|
|
QFile file(logFile);
|
|
if (!file.open(QFile::ReadOnly))
|
|
{
|
|
qWarning() << "Can't open" << logFile;
|
|
continue;
|
|
}
|
|
|
|
while (!file.atEnd())
|
|
{
|
|
const auto line = QString::fromUtf8(file.readLine());
|
|
if (line.startsWith("RTC"))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
const auto parameters = line.split(';');
|
|
if (parameters.size() < 7)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
DataTypes::LogMessage message;
|
|
message.dateTime = QDateTime::fromSecsSinceEpoch(parameters.at(0).toULongLong());
|
|
message.startupTime = parameters.at(1).toULongLong();
|
|
message.type = static_cast<DataTypes::MessageType>(parameters.at(2).toUInt());
|
|
message.f1 = parameters.at(3).toLongLong();
|
|
message.f2 = parameters.at(4).toLongLong();
|
|
message.f3 = parameters.at(5).toLongLong();
|
|
message.f4 = parameters.at(6).toLongLong();
|
|
|
|
// qDebug() << message.dateTime << message.startupTime << int(message.type);
|
|
logMessages.append(message);
|
|
}
|
|
}
|
|
|
|
return logMessages;
|
|
}
|