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"