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 #pragma once
0008 
0009 #include "fileAnalyzer.h"
0010 
0011 #include "ksystemlog_debug.h"
0012 
0013 #include "cupsLogMode.h"
0014 #include "localLogFileReader.h"
0015 #include "parsingHelper.h"
0016 
0017 #define DEBUG2_LOG_LEVEL_ICON "source"
0018 
0019 class CupsAnalyzer : public FileAnalyzer
0020 {
0021     Q_OBJECT
0022 
0023 public:
0024     explicit CupsAnalyzer(LogMode *logMode);
0025 
0026     ~CupsAnalyzer() override;
0027 
0028     LogViewColumns initColumns() override;
0029 
0030 protected:
0031     LogFileReader *createLogFileReader(const LogFile &logFile) override;
0032 
0033     Analyzer::LogFileSortMode logFileSortMode() override;
0034 
0035     /*
0036      * Also sees :
0037      * https://www.cups.org/doc/man-cupsd-logs.html
0038      * level date-time message
0039      *
0040      * Levels :
0041      * A - Alert message (LogLevel alert)
0042      * C - Critical error message (LogLevel crit)
0043      * D - Debugging message (LogLevel debug)
0044      * d - Detailed debugging message (LogLevel debug2)
0045      * E - Normal error message (LogLevel error)
0046      * I - Informational message (LogLevel info)
0047      * N - Notice message (LogLevel notice)
0048      * W - Warning message (LogLevel warn)
0049      * X - Emergency error message (LogLevel emerg)
0050      *
0051      * Log line examples :
0052      * I [15/Feb/2004:01:29:32 +0100] LoadPPDs: No new or changed PPDs...
0053      * E [15/Feb/2004:01:43:15 +0100] Scheduler shutting down due to SIGTERM.
0054      *
0055      */
0056     LogLine *parseMessage(const QString &logLine, const LogFile &originalLogFile) override;
0057 
0058 private:
0059     QMap<QChar, LogLevel *> mMapTypeLevels;
0060 
0061     void initializeTypeLevels();
0062 
0063     LogLevel *findLogLevel(QChar type);
0064 };