Module: check_mk
Branch: master
Commit: a6411686746fa7711ee887ab8248309f3f70aea3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a6411686746fa7…
Author: Sven Panne <sp(a)mathias-kettner.de>
Date: Fri Aug 31 11:32:26 2018 +0200
Unified logging messages. Made bindings more local. Improved const-correctness.
Change-Id: Ie7762b675b02ef334177158a031e0263a5930497
---
livestatus/src/Logfile.cc | 59 +++++++++++++++++++++++++----------------------
livestatus/src/Logfile.h | 12 +++++-----
2 files changed, 38 insertions(+), 33 deletions(-)
diff --git a/livestatus/src/Logfile.cc b/livestatus/src/Logfile.cc
index f24d108..5cce1cc 100644
--- a/livestatus/src/Logfile.cc
+++ b/livestatus/src/Logfile.cc
@@ -44,40 +44,45 @@
#include <vector>
#endif
-Logfile::Logfile(MonitoringCore *mc, LogCache *logcache, fs::path path,
- bool watch)
- : _mc(mc)
- , _logcache(logcache)
- , _path(std::move(path))
- , _since(0)
- , _watch(watch)
- , _read_pos{}
- , _lineno(0)
-#ifdef CMC
- , _world(nullptr)
-#endif
- , _logclasses_read(0) {
- std::ifstream is(_path, std::ios::binary);
+namespace {
+time_t firstTimestampOf(const fs::path &path, Logger *logger) {
+ std::ifstream is(path, std::ios::binary);
if (!is) {
- generic_error ge("cannot open logfile " + _path.string());
- Informational(logger()) << ge;
- return;
+ generic_error ge("cannot open logfile " + path.string());
+ Informational(logger) << ge;
+ return 0;
}
char line[12];
is.read(line, sizeof(line));
if (!is) {
- return; // ignoring. might be empty
+ return 0; // ignoring. might be empty
}
if (line[0] != '[' || line[11] != ']') {
- Informational(logger()) << "ignoring logfile '" <<
_path
- << "': does not begin with
'[123456789] '";
- return;
+ Informational(logger) << "ignoring logfile '" << path
+ << "': does not begin with '[123456789]
'";
+ return 0;
}
line[11] = 0;
- _since = atoi(line + 1);
+ return atoi(line + 1);
+}
+} // namespace
+
+Logfile::Logfile(MonitoringCore *mc, LogCache *logcache, fs::path path,
+ bool watch)
+ : _mc(mc)
+ , _logcache(logcache)
+ , _path(std::move(path))
+ , _since(firstTimestampOf(_path, logger()))
+ , _watch(watch)
+ , _read_pos{}
+ , _lineno(0)
+#ifdef CMC
+ , _world(nullptr)
+#endif
+ , _logclasses_read(0) {
}
void Logfile::flush() {
@@ -87,15 +92,15 @@ void Logfile::flush() {
void Logfile::load(unsigned logclasses) {
unsigned missing_types = logclasses & ~_logclasses_read;
- FILE *file = nullptr;
// The current logfile has the _watch flag set to true.
// In that case, if the logfile has grown, we need to
// load the rest of the file, even if no logclasses
// are missing.
if (_watch) {
- file = fopen(_path.c_str(), "r");
+ FILE *file = fopen(_path.c_str(), "r");
if (file == nullptr) {
- Informational(logger()) << "cannot open logfile '"
<< _path << "'";
+ generic_error ge("cannot open logfile " + _path.string());
+ Informational(logger()) << ge;
return;
}
// If we read this file for the first time, we initialize
@@ -124,7 +129,7 @@ void Logfile::load(unsigned logclasses) {
return;
}
- file = fopen(_path.c_str(), "r");
+ FILE *file = fopen(_path.c_str(), "r");
if (file == nullptr) {
generic_error ge("cannot open logfile " + _path.string());
Informational(logger()) << ge;
@@ -133,8 +138,8 @@ void Logfile::load(unsigned logclasses) {
_lineno = 0;
loadRange(file, missing_types, logclasses);
- fclose(file);
_logclasses_read |= missing_types;
+ fclose(file);
}
}
diff --git a/livestatus/src/Logfile.h b/livestatus/src/Logfile.h
index 062f04d..97f6649 100644
--- a/livestatus/src/Logfile.h
+++ b/livestatus/src/Logfile.h
@@ -74,13 +74,13 @@ public:
unsigned logclasses);
private:
- MonitoringCore *_mc;
+ MonitoringCore *const _mc;
LogCache *const _logcache;
- fs::path _path;
- time_t _since; // time of first entry
- bool _watch; // true only for current logfile
- fpos_t _read_pos; // read until this position
- size_t _lineno; // read until this line
+ const fs::path _path;
+ const time_t _since; // time of first entry
+ const bool _watch; // true only for current logfile
+ fpos_t _read_pos; // read until this position
+ size_t _lineno; // read until this line
logfile_entries_t _entries;
#ifdef CMC
World *_world; // CMC: world our references point into