NFVBENCH-40 Add pylint to tox
[nfvbench.git] / nfvbench / fluentd.py
index 06745ca..16ff33e 100644 (file)
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import logging
+
 from datetime import datetime
 from fluent import sender
-import logging
 import pytz
 
 
@@ -41,7 +42,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 +51,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 +83,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 +90,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):
@@ -98,8 +109,7 @@ class FluentLogHandler(logging.Handler):
             return "GOOD RUN"
         elif highest_level == logging.WARNING:
             return "RUN WITH WARNINGS"
-        else:
-            return "RUN WITH ERRORS"
+        return "RUN WITH ERRORS"
 
     def __update_stats(self, levelno):
         if levelno == logging.WARNING: