]> arthur.barton.de Git - netdata.git/blobdiff - python.d/python_modules/msg.py
show what prevented logging
[netdata.git] / python.d / python_modules / msg.py
index 5ff4e79ba92b7ead2d28bd13f79d5324f4760898..e10819c28432b3fe53e739e438f233817fc606a5 100644 (file)
@@ -2,9 +2,16 @@
 # Description: logging for netdata python.d modules
 
 import sys
+from time import time, strftime
 
 DEBUG_FLAG = False
 PROGRAM = ""
+LOG_COUNTER = 2
+LOG_INTERVAL = 5
+NEXT_CHECK = 0
+
+WRITE = sys.stderr.write
+FLUSH = sys.stderr.flush
 
 
 def log_msg(msg_type, *args):
@@ -12,10 +19,24 @@ def log_msg(msg_type, *args):
     Print message on stderr.
     :param msg_type: str
     """
-    msg = "%s %s: %s" % (PROGRAM, str(msg_type), " ".join(args))
+    global LOG_COUNTER
+    if not DEBUG_FLAG:
+        LOG_COUNTER -= 1
+    now = time()
+    if LOG_COUNTER >= 0:
+        timestamp = strftime('%Y-%m-%d %X')
+        msg = "%s: %s %s: %s" % (timestamp, PROGRAM, str(msg_type), " ".join(args))
+        WRITE(msg + "\n")
+        FLUSH()
 
-    sys.stderr.write(msg + "\n")
-    sys.stderr.flush()
+    global NEXT_CHECK
+    if NEXT_CHECK <= now:
+        NEXT_CHECK = now - (now % LOG_INTERVAL) + LOG_INTERVAL
+        if LOG_COUNTER < 0:
+            timestamp = strftime('%Y-%m-%d %X')
+            msg = "%s: python.d.plugin: Prevented %s log messages from displaying" % (timestamp, str(0 - LOG_COUNTER))
+            WRITE(msg + "\n")
+            FLUSH()
 
 
 def debug(*args):
@@ -47,5 +68,7 @@ def fatal(*args):
     Print message on stderr and exit.
     """
     log_msg("FATAL", *args)
-    sys.stdout.write('DISABLE\n')
+    # using sys.stdout causes IOError: Broken Pipe
+    print('DISABLE')
+    # sys.stdout.write('DISABLE\n')
     sys.exit(1)
\ No newline at end of file