Merge pull request #513 from overte-org/log_trunc

Truncate logs read by FileLogger
This commit is contained in:
ksuprynowicz 2023-07-09 21:14:56 +02:00 committed by GitHub
commit 2972c8919f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 5 deletions

View file

@ -321,7 +321,8 @@ void LogDialog::handleFilterDropdownChanged(int selection) {
}
QString LogDialog::getCurrentLog() {
return _logger->getLogData();
// We start 512 KiB from the end of the file.
return _logger->getLogData(524288);
}
void LogDialog::appendLogLine(QString logLine) {

View file

@ -43,7 +43,7 @@ public:
inline void setUnknownPrint(bool unknownPrint) { _unknownPrint = unknownPrint; }
virtual void addMessage(const QString&) = 0;
virtual QString getLogData() = 0;
virtual QString getLogData(const qint64 maxSize = 0) = 0;
virtual void locateLog() = 0;
virtual void sync() {}

View file

@ -157,11 +157,22 @@ void FileLogger::locateLog() {
FileUtils::locateFile(_fileName);
}
QString FileLogger::getLogData() {
QString FileLogger::getLogData(const qint64 maxSize) {
QString result;
QFile f(_fileName);
if (f.open(QFile::ReadOnly | QFile::Text)) {
result = QTextStream(&f).readAll();
if (maxSize != 0) {
f.seek(f.size() - maxSize);
}
QTextStream stream(&f);
if (maxSize != 0) {
// Continue one line, in case we are in the middle of a line.
stream.readLine();
result = "Log has been truncated to " + QString::number(maxSize) + " bytes.\n" + stream.readAll();
}
else {
result = stream.readAll();
}
}
return result;
}

View file

@ -27,7 +27,7 @@ public:
QString getFilename() const { return _fileName; }
virtual void addMessage(const QString&) override;
virtual void setSessionID(const QUuid&);
virtual QString getLogData() override;
virtual QString getLogData(const qint64 maxSize = 0) override;
virtual void locateLog() override;
virtual void sync() override;