From a3c73ad12e22929bc203ce4d0a61f7a26be85c1f Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 11 Mar 2021 23:22:55 +0100 Subject: [PATCH] Keep more logs --- nymea-app/applogcontroller.cpp | 17 +++++++++++++++-- nymea-app/applogcontroller.h | 3 +++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/nymea-app/applogcontroller.cpp b/nymea-app/applogcontroller.cpp index 7aeb680f..c842815e 100644 --- a/nymea-app/applogcontroller.cpp +++ b/nymea-app/applogcontroller.cpp @@ -64,6 +64,7 @@ AppLogController::AppLogController(QObject *parent) : QAbstractListModel(parent) QString fileName = path + "/nymea-app.log"; m_logFile.setFileName(fileName); + QByteArray oldContent; if (QFile::exists(fileName)) { if (QFile::exists(fileName + ".old")) { QFile::remove(fileName + ".old"); @@ -71,13 +72,18 @@ AppLogController::AppLogController(QObject *parent) : QAbstractListModel(parent) QFile::rename(fileName, fileName + ".old"); QFile oldFile(fileName + ".old"); if (oldFile.open(QFile::ReadOnly)) { - m_buffer.append(QString(oldFile.readAll()).split('\n')); + oldFile.seek(qMax((long long)0, oldFile.size() - 1024 * 1024)); + oldContent = oldFile.readAll(); + oldFile.close(); + + m_buffer.append(QString(oldContent).split('\n')); for (int i = 0; i < m_buffer.count(); i++) { m_types.append(TypeInfo); } m_types.append(TypeWarning); m_buffer.append("**** App restart ****"); - oldFile.close(); + + oldContent.append("\n\n**** App restart ****\n\n"); } } QDir dir(path); @@ -93,6 +99,8 @@ AppLogController::AppLogController(QObject *parent) : QAbstractListModel(parent) return; } qDebug() << "App log opened at" << fileName; + m_logFile.write(oldContent); + if (enabled()) { activate(); @@ -164,6 +172,11 @@ void AppLogController::toClipboard() QGuiApplication::clipboard()->setText(completeLog); } +QString AppLogController::logFile() const +{ + return m_logFile.fileName(); +} + void AppLogController::logMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message) { s_oldLogMessageHandler(type, context, message); diff --git a/nymea-app/applogcontroller.h b/nymea-app/applogcontroller.h index 971933d7..a9f4c02b 100644 --- a/nymea-app/applogcontroller.h +++ b/nymea-app/applogcontroller.h @@ -42,6 +42,7 @@ class AppLogController : public QAbstractListModel Q_OBJECT Q_PROPERTY(bool canWriteLogs READ canWriteLogs CONSTANT) Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) + Q_PROPERTY(QString logFile READ logFile CONSTANT) public: enum Type { @@ -71,6 +72,8 @@ public: Q_INVOKABLE void toClipboard(); + QString logFile() const; + signals: void enabledChanged();