File indexing completed on 2024-05-12 05:48:38

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "cupsPdfAnalyzer.h"
0008 
0009 CupsPdfAnalyzer::CupsPdfAnalyzer(LogMode *logMode)
0010     : FileAnalyzer(logMode)
0011     , mCupsPdfRegex(QLatin1String("\\S* ") + ParsingHelper::instance()->syslogDateTimeRegexp() + QLatin1String(R"([ ]+\[(\w*)\][ ]+(.*))"))
0012 { // \\[(.*)\\] (\\S*) (\\S*) (\\S*)
0013 }
0014 
0015 LogViewColumns CupsPdfAnalyzer::initColumns()
0016 {
0017     LogViewColumns columns;
0018 
0019     columns.addColumn(LogViewColumn(i18n("Date"), true, false));
0020     columns.addColumn(LogViewColumn(i18n("Message"), true, false));
0021 
0022     return columns;
0023 }
0024 
0025 LogLine *CupsPdfAnalyzer::parseMessage(const QString &logLine, const LogFile &originalLogFile)
0026 {
0027     int const firstPosition = mCupsPdfRegex.indexIn(logLine);
0028     if (firstPosition == -1) {
0029         qCDebug(KSYSTEMLOG) << "Unable to parse line " << logLine;
0030         return nullptr;
0031     }
0032 
0033     QStringList capturedTexts = mCupsPdfRegex.capturedTexts();
0034 
0035     /*
0036   qCDebug(KSYSTEMLOG) << "------------------------------------------";
0037         foreach(QString cap, capturedTexts) {
0038     qCDebug(KSYSTEMLOG) << cap;
0039         }
0040   qCDebug(KSYSTEMLOG) << "------------------------------------------";
0041         */
0042 
0043     // Remove full line
0044     capturedTexts.removeAt(0);
0045 
0046     const QDateTime dateTime = ParsingHelper::instance()->parseSyslogDateTime(capturedTexts.takeAt(0));
0047     LogLevel *logLevel = findLogLevel(capturedTexts.takeAt(0));
0048 
0049     return new LogLine(mLogLineInternalIdGenerator++, dateTime, capturedTexts, originalLogFile.url().toLocalFile(), logLevel, mLogMode);
0050 }
0051 
0052 LogLevel *CupsPdfAnalyzer::findLogLevel(const QString &level)
0053 {
0054     if (level == QLatin1String("ERROR")) {
0055         return Globals::instance().errorLogLevel();
0056     }
0057 
0058     // level == "STATUS"
0059     return Globals::instance().informationLogLevel();
0060 }
0061 
0062 #include "moc_cupsPdfAnalyzer.cpp"