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 "cupsAnalyzer.h"
0008 #include <KLocalizedString>
0009 
0010 CupsAnalyzer::CupsAnalyzer(LogMode *logMode)
0011     : FileAnalyzer(logMode)
0012 {
0013     initializeTypeLevels();
0014 }
0015 
0016 CupsAnalyzer::~CupsAnalyzer()
0017 {
0018 }
0019 
0020 LogViewColumns CupsAnalyzer::initColumns()
0021 {
0022     LogViewColumns columns;
0023     columns.addColumn(LogViewColumn(i18n("Date"), true, false));
0024     columns.addColumn(LogViewColumn(i18n("Message"), true, false));
0025 
0026     return columns;
0027 }
0028 
0029 LogFileReader *CupsAnalyzer::createLogFileReader(const LogFile &logFile)
0030 {
0031     return new LocalLogFileReader(logFile);
0032 }
0033 
0034 Analyzer::LogFileSortMode CupsAnalyzer::logFileSortMode()
0035 {
0036     return Analyzer::AscendingSortedLogFile;
0037 }
0038 
0039 LogLine *CupsAnalyzer::parseMessage(const QString &logLine, const LogFile &originalLogFile)
0040 {
0041     QString line(logLine);
0042 
0043     const QChar level = logLine[0];
0044 
0045     const QDateTime dateTime = ParsingHelper::instance()->parseHttpDateTime(logLine.mid(3, 26));
0046 
0047     const QString message = line.remove(0, 31);
0048 
0049     const QStringList list{message};
0050 
0051     return new LogLine(mLogLineInternalIdGenerator++, dateTime, list, originalLogFile.url().toLocalFile(), findLogLevel(level), mLogMode);
0052 }
0053 
0054 void CupsAnalyzer::initializeTypeLevels()
0055 {
0056     mMapTypeLevels[QLatin1Char('d')] = new LogLevel(20, i18n("debug 2"), QStringLiteral(DEBUG2_LOG_LEVEL_ICON), QColor(169, 189, 165), this);
0057     mMapTypeLevels[QLatin1Char('D')] = Globals::instance().debugLogLevel();
0058     mMapTypeLevels[QLatin1Char('I')] = Globals::instance().informationLogLevel();
0059     mMapTypeLevels[QLatin1Char('N')] = Globals::instance().noticeLogLevel();
0060     mMapTypeLevels[QLatin1Char('W')] = Globals::instance().warningLogLevel();
0061     mMapTypeLevels[QLatin1Char('E')] = Globals::instance().errorLogLevel();
0062     mMapTypeLevels[QLatin1Char('C')] = Globals::instance().criticalLogLevel();
0063     mMapTypeLevels[QLatin1Char('A')] = Globals::instance().alertLogLevel();
0064     mMapTypeLevels[QLatin1Char('X')] = Globals::instance().emergencyLogLevel();
0065     mMapTypeLevels[QLatin1Char(' ')] = Globals::instance().noLogLevel();
0066 }
0067 
0068 LogLevel *CupsAnalyzer::findLogLevel(QChar type)
0069 {
0070     QMap<QChar, LogLevel *>::iterator it;
0071 
0072     it = mMapTypeLevels.find(type);
0073     if (it != mMapTypeLevels.end()) {
0074         return *it;
0075     } else {
0076         qCCritical(KSYSTEMLOG) << i18n("New Log Level detected: Please send this log file to the KSystemLog developer to add it.");
0077         return Globals::instance().noLogLevel();
0078     }
0079 }
0080 
0081 #include "moc_cupsAnalyzer.cpp"