NFVBENCH-25 Send run results to fluentd
[nfvbench.git] / nfvbench / fluentd.py
index 06745ca..a9bda62 100644 (file)
@@ -41,7 +41,7 @@ class FluentLogHandler(logging.Handler):
     def start_new_run(self):
         '''Delimitate a new run in the stream of records with a new timestamp
         '''
-        self.runlogdate = str(datetime.now())
+        self.runlogdate = self.__get_timestamp()
         # reset counters
         self.__warning_counter = 0
         self.__error_counter = 0
@@ -50,14 +50,21 @@ class FluentLogHandler(logging.Handler):
 
     def emit(self, record):
         data = {
-            "runlogdate": self.runlogdate,
             "loglevel": record.levelname,
             "message": self.formatter.format(record),
             "@timestamp": self.__get_timestamp()
         }
+        # if runlogdate is 0, it's a log from server (not an nfvbench run) so do not send runlogdate
+        if self.runlogdate != 0:
+            data["runlogdate"] = self.runlogdate
+
         self.__update_stats(record.levelno)
         self.sender.emit(None, data)
 
+    # this function is called by summarizer
+    def record_send(self, record):
+        self.sender.emit(None, record)
+
     # send START record for each run
     def __send_start_record(self):
         data = {
@@ -75,7 +82,6 @@ class FluentLogHandler(logging.Handler):
     def send_run_summary(self, run_summary_required):
         if run_summary_required or self.__get_highest_level() == logging.ERROR:
             data = {
-                "runlogdate": self.runlogdate,
                 "loglevel": "RUN_SUMMARY",
                 "message": self.__get_highest_level_desc(),
                 "numloglevel": self.__get_highest_level(),
@@ -83,6 +89,10 @@ class FluentLogHandler(logging.Handler):
                 "numwarnings": self.__warning_counter,
                 "@timestamp": self.__get_timestamp()
             }
+            # if runlogdate is 0, it's a log from server (not an nfvbench run)
+            # so don't send runlogdate
+            if self.runlogdate != 0:
+                data["runlogdate"] = self.runlogdate
             self.sender.emit(None, data)
 
     def __get_highest_level(self):