aboutsummaryrefslogtreecommitdiffstats
path: root/logd/src/logd/empty_forwarder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logd/src/logd/empty_forwarder.cpp')
-rw-r--r--logd/src/logd/empty_forwarder.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/logd/src/logd/empty_forwarder.cpp b/logd/src/logd/empty_forwarder.cpp
new file mode 100644
index 00000000000..ca43950f56a
--- /dev/null
+++ b/logd/src/logd/empty_forwarder.cpp
@@ -0,0 +1,51 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "empty_forwarder.h"
+#include "metrics.h"
+#include <vespa/log/exceptions.h>
+#include <vespa/log/log_message.h>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".logd.empty_forwarder");
+
+using LogLevel = ns_log::Logger::LogLevel;
+using ns_log::BadLogLineException;
+using ns_log::LogMessage;
+using ns_log::Logger;
+using LogLevel = Logger::LogLevel;
+
+namespace logdemon {
+
+EmptyForwarder::EmptyForwarder(Metrics& metrics)
+ :
+ _metrics(metrics),
+ _badLines(0)
+{
+}
+
+EmptyForwarder::~EmptyForwarder() = default;
+
+void
+EmptyForwarder::forwardLine(std::string_view line)
+{
+ assert (line.size() < 1024*1024);
+
+ LogMessage message;
+ try {
+ message.parse_log_line(line);
+ } catch (BadLogLineException& e) {
+ LOG(spam, "bad logline: %s", e.what());
+ ++_badLines;
+ return;
+ }
+
+ std::string logLevelName;
+ if (message.level() >= LogLevel::NUM_LOGLEVELS) {
+ logLevelName = "unknown";
+ } else {
+ logLevelName = Logger::logLevelNames[message.level()];
+ }
+ _metrics.countLine(logLevelName, message.service());
+}
+
+}