summaryrefslogtreecommitdiff
path: root/lib/spack/llnl/util/tty/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/spack/llnl/util/tty/__init__.py')
-rw-r--r--lib/spack/llnl/util/tty/__init__.py28
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)