/******************************************************************************
* Icinga 2 *
- * Copyright (C) 2012-2015 Icinga Development Team (http://www.icinga.org) *
+ * Copyright (C) 2012-2018 Icinga Development Team (https://www.icinga.com/) *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
#include "base/utility.hpp"
#include "base/convert.hpp"
#include "base/logger.hpp"
-#include <boost/foreach.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/algorithm/string.hpp>
-#include <boost/algorithm/string/split.hpp>
-#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <fstream>
void LivestatusLogUtility::CreateLogIndex(const String& path, std::map<time_t, String>& index)
{
- Utility::Glob(path + "/icinga.log", boost::bind(&LivestatusLogUtility::CreateLogIndexFileHandler, _1, boost::ref(index)), GlobFile);
- Utility::Glob(path + "/archives/*.log", boost::bind(&LivestatusLogUtility::CreateLogIndexFileHandler, _1, boost::ref(index)), GlobFile);
+ Utility::Glob(path + "/icinga.log", std::bind(&LivestatusLogUtility::CreateLogIndexFileHandler, _1, std::ref(index)), GlobFile);
+ Utility::Glob(path + "/archives/*.log", std::bind(&LivestatusLogUtility::CreateLogIndexFileHandler, _1, std::ref(index)), GlobFile);
}
void LivestatusLogUtility::CreateLogIndexFileHandler(const String& path, std::map<time_t, String>& index)
stream.close();
Log(LogDebug, "LivestatusLogUtility")
- << "Indexing log file: '" << path << "' with timestamp start: '" << ts_start << "'.";
+ << "Indexing log file: '" << path << "' with timestamp start: '" << ts_start << "'.";
index[ts_start] = path;
}
void LivestatusLogUtility::CreateLogCache(std::map<time_t, String> index, HistoryTable *table,
- time_t from, time_t until, const AddRowFunction& addRowFn)
+ time_t from, time_t until, const AddRowFunction& addRowFn)
{
ASSERT(table);
/* m_LogFileIndex map tells which log files are involved ordered by their start timestamp */
- unsigned int ts;
unsigned long line_count = 0;
- BOOST_FOREACH(boost::tie(ts, boost::tuples::ignore), index) {
+ for (const auto& kv : index) {
+ unsigned int ts = kv.first;
+
/* skip log files not in range (performance optimization) */
if (ts < from || ts > until)
continue;
/* no attributes available - invalid log line */
if (!log_entry_attrs) {
Log(LogDebug, "LivestatusLogUtility")
- << "Skipping invalid log line: '" << line << "'.";
+ << "Skipping invalid log line: '" << line << "'.";
continue;
}
unsigned long time = atoi(text.SubStr(1, 11).CStr());
Log(LogDebug, "LivestatusLogUtility")
- << "Processing log line: '" << text << "'.";
+ << "Processing log line: '" << text << "'.";
bag->Set("time", time);
size_t colon = text.FindFirstOf(':');
bag->Set("type", type);
bag->Set("options", options);
- std::vector<String> tokens;
- boost::algorithm::split(tokens, options, boost::is_any_of(";"));
+ std::vector<String> tokens = options.Split(";");
/* set default values */
bag->Set("class", LogEntryClassInfo);
bag->Set("message", text); /* used as 'message' in log table, and 'log_output' in statehist table */
if (type.Contains("INITIAL HOST STATE") ||
- type.Contains("CURRENT HOST STATE") ||
- type.Contains("HOST ALERT")) {
+ type.Contains("CURRENT HOST STATE") ||
+ type.Contains("HOST ALERT")) {
if (tokens.size() < 5)
return bag;
}
return bag;
- } else if (type.Contains("HOST DOWNTIME ALERT") ||
- type.Contains("HOST FLAPPING ALERT")) {
+ } else if (type.Contains("HOST DOWNTIME ALERT") || type.Contains("HOST FLAPPING ALERT")) {
if (tokens.size() < 3)
return bag;
return bag;
} else if (type.Contains("INITIAL SERVICE STATE") ||
- type.Contains("CURRENT SERVICE STATE") ||
- type.Contains("SERVICE ALERT")) {
+ type.Contains("CURRENT SERVICE STATE") ||
+ type.Contains("SERVICE ALERT")) {
if (tokens.size() < 6)
return bag;
return bag;
} else if (type.Contains("SERVICE DOWNTIME ALERT") ||
- type.Contains("SERVICE FLAPPING ALERT")) {
+ type.Contains("SERVICE FLAPPING ALERT")) {
if (tokens.size() < 4)
return bag;
}
/* program */
else if (type.Contains("restarting...") ||
- type.Contains("shutting down...") ||
- type.Contains("Bailing out") ||
- type.Contains("active mode...") ||
- type.Contains("standby mode...")) {
+ type.Contains("shutting down...") ||
+ type.Contains("Bailing out") ||
+ type.Contains("active mode...") ||
+ type.Contains("standby mode...")) {
bag->Set("class", LogEntryClassProgram);
return bag;