enabled option "trace" to get python traces on errors
Costa Tsaousis (ktsaou) committed
Nov 12, 2016 at 14:17 UTC
a8204a0e864b4e0226ee07243adeb61f007fedf1
2 files changed
+21
-2
plugins.d/python.d.plugin
+16
-2
@@ -28,6 +28,7 @@ sys.path.append(MODULES_DIR + "python_modules")
28
29
PROGRAM = os.path.basename(__file__).replace(".plugin", "")
30
DEBUG_FLAG = False
31
+TRACE_FLAG = False
32
OVERRIDE_UPDATE_EVERY = False
33
34
# -----------------------------------------------------------------------------
@@ -435,7 +436,7 @@ def parse_cmdline(directory, *commands):
436
:param commands: list of str
437
:return: dict
438
"""
438
- global DEBUG_FLAG
439
+ global DEBUG_FLAG, TRACE_FLAG
440
global OVERRIDE_UPDATE_EVERY
441
global BASE_CONFIG
442
@@ -447,6 +448,8 @@ def parse_cmdline(directory, *commands):
448
elif cmd == "debug" or cmd == "all":
449
DEBUG_FLAG = True
450
# redirect stderr to stdout?
451
+ elif cmd == "trace" or cmd == "all":
452
+ TRACE_FLAG = True
453
elif os.path.isfile(directory + cmd + ".chart.py") or os.path.isfile(directory + cmd):
454
#DEBUG_FLAG = True
455
mods.append(cmd.replace(".chart.py", ""))
@@ -470,7 +473,7 @@ def run():
473
"""
474
Main program.
475
"""
473
- global DEBUG_FLAG, BASE_CONFIG
476
+ global DEBUG_FLAG, TRACE_FLAG, BASE_CONFIG
477
478
# read configuration file
479
disabled = []
@@ -488,23 +491,33 @@ def run():
491
msg.fatal('disabled in configuration file.\n')
492
except (KeyError, TypeError):
493
pass
494
+
495
try:
496
for param in BASE_CONFIG:
497
BASE_CONFIG[param] = conf[param]
498
except (KeyError, TypeError):
499
pass # use default update_every from NETDATA_UPDATE_EVERY
500
+
501
try:
502
DEBUG_FLAG = conf['debug']
503
except (KeyError, TypeError):
504
pass
505
+
506
+ try:
507
+ TRACE_FLAG = conf['trace']
508
+ except (KeyError, TypeError):
509
+ pass
510
+
511
try:
512
log_throttle = conf['logs_per_interval']
513
except (KeyError, TypeError):
514
pass
515
+
516
try:
517
log_interval = conf['log_interval']
518
except (KeyError, TypeError):
519
pass
520
+
521
for k, v in conf.items():
522
if k in ("update_every", "debug", "enabled"):
523
continue
@@ -514,6 +527,7 @@ def run():
527
# parse passed command line arguments
528
modules = parse_cmdline(MODULES_DIR, *sys.argv)
529
msg.DEBUG_FLAG = DEBUG_FLAG
530
+ msg.TRACE_FLAG = TRACE_FLAG
531
msg.LOG_THROTTLE = log_throttle
532
msg.LOG_INTERVAL = log_interval
533
msg.LOG_COUNTER = 0
python.d/python_modules/msg.py
+5
@@ -1,10 +1,12 @@
1
# -*- coding: utf-8 -*-
2
# Description: logging for netdata python.d modules
3
4
+import traceback
5
import sys
6
from time import time, strftime
7
8
DEBUG_FLAG = False
9
+TRACE_FLAG = False
10
PROGRAM = ""
11
LOG_COUNTER = 0
12
LOG_THROTTLE = 10000 # has to be too big during init
@@ -51,6 +53,9 @@ def log_msg(msg_type, *args):
53
LOG_NEXT_CHECK = now - (now % LOG_INTERVAL) + LOG_INTERVAL
54
LOG_COUNTER = 0
55
56
+ if TRACE_FLAG:
57
+ if msg_type == "FATAL" or msg_type == "ERROR" or msg_type == "ALERT":
58
+ traceback.print_exc()
59
60
61
def debug(*args):