LOG_NODE=1
LOG_VERBOSE=2
# default is to log a reasonable amount of stuff for when running on operational nodes
-LOG_LEVEL=1
+LOG_LEVEL=LOG_NODE
def set_level(level):
global LOG_LEVEL
- assert level in [LOG_NONE,LOG_NODE,LOG_VERBOSE]
- LOG_LEVEL=level
+ try:
+ assert level in [LOG_NONE,LOG_NODE,LOG_VERBOSE]
+ LOG_LEVEL=level
+ except:
+ logger.log("Failed to set LOG_LEVEL to %s"%level)
def verbose(msg):
log('(v) '+msg,LOG_VERBOSE)
sys.stderr.flush()
def log_exc(msg="",name=None):
- """Log the traceback resulting from an exception."""
- if name:
- log("%s: EXCEPTION caught <%s> \n %s" %(name, msg, traceback.format_exc()))
- else:
- log("EXCEPTION caught <%s> \n %s" %(msg, traceback.format_exc()))
+ """Log traceback resulting from an exception."""
+ printout=""
+ if name: printout += "%s: "%name
+ printout += "EXCEPTION caught <%s> \n %s" %(msg, traceback.format_exc())
+ log(printout)
+
+def log_trace(msg="",name=None):
+ """Log current stack"""
+ printout=""
+ if name: printout += "%s: "%name
+ printout += "LOGTRACE\n"
+ for frame in traceback.format_stack():
+ printout += "..."+frame
+ log(printout)
+
########## snapshot data to a file
# for some reason the various modules are still triggered even when the