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 #pragma once 0008 0009 #include <KLocalizedString> 0010 0011 #include "syslogAnalyzer.h" 0012 0013 #include "cronConfiguration.h" 0014 #include "cronLogMode.h" 0015 0016 class LogMode; 0017 0018 class CronAnalyzer : public SyslogAnalyzer 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 explicit CronAnalyzer(LogMode *logMode); 0024 ~CronAnalyzer() override 0025 { 0026 } 0027 0028 LogViewColumns initColumns() override; 0029 0030 Analyzer::LogFileSortMode logFileSortMode() override; 0031 0032 /* 0033 * Cron line example : 0034 * Sep 16 01:3;D ( [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm) 0035 * Sep 16 18:39:05 localhost /usr/sbin/cron[5479]: (CRON) INFO (pidfile fd = 3) 0036 * Sep 16 18:39:05 localhost /usr/sbin/cron[5480]: (CRON) STARTUP (fork ok) 0037 * Sep 16 18:39:05 localhost /usr/sbin/cron[5480]: (CRON) INFO (Running @reboot jobs) 0038 * 0039 */ 0040 LogLine *parseMessage(const QString &logLine, const LogFile &originalFile) override; 0041 0042 inline bool isCronLine(LogLine *syslogLine) 0043 { 0044 auto *cronConfiguration = mLogMode->logModeConfiguration<CronConfiguration *>(); 0045 if (cronConfiguration->processFilter().isEmpty()) { 0046 return true; 0047 } 0048 0049 // If the process line does not match the cron process, then ignore this line 0050 const QStringList list = syslogLine->logItems(); 0051 QString processLine = list.at(1); 0052 if (processLine.contains(cronConfiguration->processFilter(), Qt::CaseInsensitive)) { 0053 return true; 0054 } 0055 0056 return false; 0057 } 0058 };