diff options
Diffstat (limited to 'lib/spack/llnl/util/tty/__init__.py')
-rw-r--r-- | lib/spack/llnl/util/tty/__init__.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index 41eef5d284..79ca5a9929 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -19,7 +19,8 @@ from six.moves import input from llnl.util.tty.color import cprint, cwrite, cescape, clen -_debug = False +# Globals +_debug = 0 _verbose = False _stacktrace = False _timestamp = False @@ -29,21 +30,26 @@ _error_enabled = True indent = " " +def debug_level(): + return _debug + + def is_verbose(): return _verbose -def is_debug(): - return _debug +def is_debug(level=1): + return _debug >= level def is_stacktrace(): return _stacktrace -def set_debug(flag): +def set_debug(level=0): global _debug - _debug = flag + assert level >= 0, 'Debug level must be a positive value' + _debug = level def set_verbose(flag): @@ -132,12 +138,17 @@ def process_stacktrace(countback): return st_text +def show_pid(): + return is_debug(2) + + def get_timestamp(force=False): """Get a string timestamp""" if _debug or _timestamp or force: # Note inclusion of the PID is useful for parallel builds. - return '[{0}, {1}] '.format( - datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f"), os.getpid()) + pid = ', {0}'.format(os.getpid()) if show_pid() else '' + return '[{0}{1}] '.format( + datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f"), pid) else: return '' @@ -197,7 +208,8 @@ def verbose(message, *args, **kwargs): def debug(message, *args, **kwargs): - if _debug: + level = kwargs.get('level', 1) + if is_debug(level): kwargs.setdefault('format', 'g') kwargs.setdefault('stream', sys.stderr) info(message, *args, **kwargs) |