File indexing completed on 2024-05-12 05:48:41
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 "xorgAnalyzer.h" 0008 #include <KLocalizedString> 0009 0010 XorgAnalyzer::XorgAnalyzer(LogMode *logMode) 0011 : FileAnalyzer(logMode) 0012 , mCurrentDateTime(QDateTime::currentDateTime()) 0013 { 0014 initializeTypeName(); 0015 } 0016 0017 XorgAnalyzer::~XorgAnalyzer() 0018 { 0019 } 0020 0021 LogViewColumns XorgAnalyzer::initColumns() 0022 { 0023 LogViewColumns columns; 0024 0025 columns.addColumn(LogViewColumn(i18n("Line"), false, false)); 0026 columns.addColumn(LogViewColumn(i18n("Type"), false, false)); 0027 columns.addColumn(LogViewColumn(i18n("Message"), false, false)); 0028 0029 columns.setGroupByDay(false); 0030 columns.setGroupByHour(false); 0031 0032 return columns; 0033 } 0034 0035 LogFileReader *XorgAnalyzer::createLogFileReader(const LogFile &logFile) 0036 { 0037 return new LocalLogFileReader(logFile); 0038 } 0039 0040 Analyzer::LogFileSortMode XorgAnalyzer::logFileSortMode() 0041 { 0042 return Analyzer::AscendingSortedLogFile; 0043 } 0044 0045 LogLine *XorgAnalyzer::parseMessage(const QString &logLine, const LogFile &originalFile) 0046 { 0047 QString string(logLine); 0048 0049 const QString type = string.left(4); 0050 0051 LogLevel *logLineType = findTypeName(type); 0052 0053 // If the type is not empty, the log message has a type, so we can delete it 0054 if (logLineType) { 0055 string.remove(0, 5); 0056 } else { 0057 logLineType = Globals::instance().informationLogLevel(); 0058 } 0059 0060 QStringList list; 0061 list.append(logLineType->name()); 0062 list.append(string); 0063 0064 return new LogLine(mLogLineInternalIdGenerator++, mCurrentDateTime, list, originalFile.url().toLocalFile(), logLineType, mLogMode); 0065 } 0066 0067 void XorgAnalyzer::initializeTypeName() 0068 { 0069 mXorgLevels[QStringLiteral("(--)")] = new LogLevel(1001, i18n("Probed"), QStringLiteral(PROBED_LOG_LEVEL_ICON), QColor(246, 206, 30), this); 0070 0071 mXorgLevels[QStringLiteral("(**)")] = new LogLevel(1002, i18n("From config file"), QStringLiteral(CONFIG_FILE_LOG_LEVEL_ICON), QColor(161, 133, 240), this); 0072 0073 mXorgLevels[QStringLiteral("(==)")] = 0074 new LogLevel(1003, i18n("Default setting"), QStringLiteral(DEFAULT_SETTING_LOG_LEVEL_ICON), QColor(169, 189, 165), this); 0075 0076 mXorgLevels[QStringLiteral("(++)")] = 0077 new LogLevel(1004, i18n("From command Line"), QStringLiteral(COMMAND_LINE_LOG_LEVEL_ICON), QColor(179, 181, 214), this); 0078 0079 mXorgLevels[QStringLiteral("(!!)")] = Globals::instance().noticeLogLevel(); 0080 mXorgLevels[QStringLiteral("(II)")] = Globals::instance().informationLogLevel(); 0081 mXorgLevels[QStringLiteral("(WW)")] = Globals::instance().warningLogLevel(); 0082 mXorgLevels[QStringLiteral("(EE)")] = Globals::instance().errorLogLevel(); 0083 0084 mXorgLevels[QStringLiteral("(NI)")] = 0085 new LogLevel(1005, i18n("Not implemented"), QStringLiteral(NOT_IMPLEMENTED_LOG_LEVEL_ICON), QColor(136, 146, 240), this); 0086 0087 mXorgLevels[QStringLiteral("(\?\?)")] = Globals::instance().noLogLevel(); 0088 } 0089 0090 LogLevel *XorgAnalyzer::findTypeName(const QString &type) 0091 { 0092 QMap<QString, LogLevel *>::iterator it; 0093 0094 it = mXorgLevels.find(type); 0095 if (it != mXorgLevels.end()) { 0096 return *it; 0097 } else { 0098 return nullptr; 0099 } 0100 } 0101 0102 #include "moc_xorgAnalyzer.cpp"