File indexing completed on 2024-05-19 05:49:17

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <KLocalizedString>
0010 
0011 #include "ksystemlog_debug.h"
0012 
0013 #include "fileAnalyzer.h"
0014 
0015 #include "kernelLogMode.h"
0016 #include "localLogFileReader.h"
0017 #include "processOutputLogFileReader.h"
0018 
0019 class LogMode;
0020 
0021 class KernelAnalyzer : public FileAnalyzer
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     explicit KernelAnalyzer(LogMode *logMode);
0027 
0028     ~KernelAnalyzer() override
0029     {
0030     }
0031 
0032     LogViewColumns initColumns() override;
0033 
0034 protected:
0035     LogFileReader *createLogFileReader(const LogFile &logFile) override;
0036 
0037     Analyzer::LogFileSortMode logFileSortMode() override
0038     {
0039         return Analyzer::AscendingSortedLogFile;
0040     }
0041 
0042     void startupTime();
0043 
0044     LogLine *parseMessage(const QString &logLine, const LogFile &originalLogFile) override;
0045 
0046     inline void parseComponentMessage(const QString &logLine, QStringList &messages)
0047     {
0048         QString message(logLine);
0049         QString component;
0050 
0051         int doublePointPosition = message.indexOf(QLatin1Char(':'));
0052 
0053         // Estimate the max size of a component
0054         if (doublePointPosition != -1 && doublePointPosition < 20) {
0055             component = message.left(doublePointPosition);
0056             // Remove component length + ": "
0057             message.remove(0, doublePointPosition + 2);
0058         }
0059 
0060         messages.append(component);
0061         messages.append(message.simplified());
0062     }
0063 
0064 protected:
0065     QDateTime mStartupDateTime;
0066 };