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

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 "cupsAccessAnalyzer.h"
0008 
0009 CupsAccessAnalyzer::CupsAccessAnalyzer(LogMode *logMode)
0010     : FileAnalyzer(logMode)
0011     , mCupsAccessRegex(QStringLiteral("(\\S*) (\\S*) (\\S*) \\[(.*)\\] \"(.*)\" (\\S*) (\\S*) (\\S*) (\\S*)"))
0012 {
0013 }
0014 
0015 LogViewColumns CupsAccessAnalyzer::initColumns()
0016 {
0017     LogViewColumns columns;
0018 
0019     columns.addColumn(LogViewColumn(i18n("Date"), true, false));
0020     columns.addColumn(LogViewColumn(i18n("Host"), true, true));
0021     columns.addColumn(LogViewColumn(i18n("Group"), true, true));
0022     columns.addColumn(LogViewColumn(i18n("User"), true, true));
0023     columns.addColumn(LogViewColumn(i18n("HTTP Request"), true, false));
0024     columns.addColumn(LogViewColumn(i18n("Status"), true, true));
0025     columns.addColumn(LogViewColumn(i18n("Bytes"), true, false));
0026     columns.addColumn(LogViewColumn(i18n("IPP Operation"), true, false));
0027     columns.addColumn(LogViewColumn(i18n("IPP Status"), true, false));
0028 
0029     return columns;
0030 }
0031 
0032 LogFileReader *CupsAccessAnalyzer::createLogFileReader(const LogFile &logFile)
0033 {
0034     return new LocalLogFileReader(logFile);
0035 }
0036 
0037 Analyzer::LogFileSortMode CupsAccessAnalyzer::logFileSortMode()
0038 {
0039     return Analyzer::AscendingSortedLogFile;
0040 }
0041 
0042 LogLine *CupsAccessAnalyzer::parseMessage(const QString &logLine, const LogFile &originalLogFile)
0043 {
0044     int const firstPosition = mCupsAccessRegex.indexIn(logLine);
0045     if (firstPosition == -1) {
0046         qCDebug(KSYSTEMLOG) << "Unable to parse line " << logLine;
0047         return nullptr;
0048     }
0049 
0050     QStringList capturedTexts = mCupsAccessRegex.capturedTexts();
0051 
0052     // Remove full line
0053     capturedTexts.removeAt(0);
0054 
0055     capturedTexts.replace(5, ParsingHelper::instance()->parseHttpResponse(capturedTexts.at(5)));
0056     capturedTexts.replace(6, ParsingHelper::instance()->parseSize(capturedTexts.at(6)));
0057 
0058     const QDateTime dateTime = ParsingHelper::instance()->parseHttpDateTime(capturedTexts.takeAt(3));
0059 
0060     LogLevel *logLevel = findLevel(capturedTexts.at(capturedTexts.count() - 1));
0061 
0062     return new LogLine(mLogLineInternalIdGenerator++, dateTime, capturedTexts, originalLogFile.url().toLocalFile(), logLevel, mLogMode);
0063 }
0064 
0065 #include "moc_cupsAccessAnalyzer.cpp"