Add the PYSAWSIM_LOG_LEVEL environmental variable.
authorW. Trevor King <wking@drexel.edu>
Fri, 16 Sep 2011 16:30:32 +0000 (12:30 -0400)
committerW. Trevor King <wking@drexel.edu>
Fri, 16 Sep 2011 16:30:32 +0000 (12:30 -0400)
pysawsim/__init__.py
pysawsim/parameter_error.py
pysawsim/parameter_scan.py
pysawsim/sawsim.py
pysawsim/sawsim_histogram.py

index 9cb3a97..19cfcba 100644 (file)
@@ -47,7 +47,8 @@ Just go crazy with doctests and unittests; nose_ will find them.
 
 import logging
 import logging.handlers
-import sys
+import sys as _sys
+import os as _os
 
 
 _multiprocess_shared_ = True
@@ -59,10 +60,24 @@ This module cannot be split because _log setup is not re-entrant.
 __version__ = '0.10'  # match sawsim version
 
 
+PYSAWSIM_LOG_LEVEL_MSG = """
+You can control the log verbosity with the `PYSAWSIM_LOG_LEVEL`
+environmental variable.  Set it to one of the level names in Python's
+`logging` module (e.g. `DEBUG`).
+"""
+
 def log():
     return logging.getLogger('pysawsim')
 
-def add_stderr_log_handler(level=logging.DEBUG):
+def add_stderr_log_handler(level=None):
+    if level == None:
+        level_string = _os.environ.get('PYSAWSIM_LOG_LEVEL', 'WARNING')
+        try:
+            level = getattr(logging, level_string)
+        except AttributeError:
+            _sys.stderr.write(
+                'unrecognized PYSAWSIM_LOG_LEVEL: %s\n' % level_string)
+            raise
     _log = log()
     _log.setLevel(level)
     console = logging.StreamHandler()
@@ -70,4 +85,4 @@ def add_stderr_log_handler(level=logging.DEBUG):
     console.setFormatter(formatter)
     _log.addHandler(console)
 
-add_stderr_log_handler(logging.WARNING)
+add_stderr_log_handler()
index f56ba26..44031f2 100644 (file)
@@ -22,6 +22,7 @@
 
 import numpy
 
+from . import PYSAWSIM_LOG_LEVEL_MSG as _PYSAWSIM_LOG_LEVEL_MSG
 from .histogram import Histogram
 from .parameter_scan import (
     EXAMPLE_HISTOGRAM_FILE_CONTENTS, HistogramMatcher,
@@ -122,6 +123,7 @@ def main(argv=None):
             '`<bin_edge>` should mark the left-hand side of the bin, and',
             'all bins should be of equal width (so we know where the last',
             'one ends).',
+            _PYSAWSIM_LOG_LEVEL_MSG,
             ])
     parser = OptionParser(usage, epilog=epilog)
     parser.format_epilog = lambda formatter: epilog+'\n'
index 439fd0b..0f30fb6 100644 (file)
@@ -31,6 +31,7 @@ import numpy
 import pylab
 
 from . import log
+from . import PYSAWSIM_LOG_LEVEL_MSG as _PYSAWSIM_LOG_LEVEL_MSG
 from .histogram import Histogram
 from .sawsim_histogram import sawsim_histogram
 from .sawsim import SawsimRunner
@@ -381,6 +382,7 @@ def main(argv=None):
             '`<bin_edge>` should mark the left-hand side of the bin, and',
             'all bins should be of equal width (so we know where the last',
             'one ends).',
+            PYSAWSIM_LOG_LEVEL_MSG,
             ])
     parser = OptionParser(usage, epilog=epilog)
     parser.format_epilog = lambda formatter: epilog+'\n'
index 0f85869..da726c7 100644 (file)
@@ -37,6 +37,7 @@ import shutil
 from uuid import uuid4
 
 from . import __version__
+from . import PYSAWSIM_LOG_LEVEL_MSG as _PYSAWSIM_LOG_LEVEL_MSG
 from .manager import MANAGERS, get_manager, InvokeJob
 
 
@@ -302,9 +303,11 @@ def main(argv=None):
     epilog = '\n'.join([
             'Python wrapper around `sawsim`.  Distribute `N` runs using',
             'one of the possible job "managers".  Also supports caching',
-            'results to speed future runs.'
+            'results to speed future runs.',
+            _PYSAWSIM_LOG_LEVEL_MSG,
             ])
     parser = OptionParser(usage, epilog=epilog)
+    parser.format_epilog = lambda formatter: epilog+'\n'
     for option in sr.optparse_options:
         parser.add_option(option)
     
index 14b94ed..d349316 100644 (file)
@@ -19,6 +19,7 @@
 
 import numpy
 
+from . import PYSAWSIM_LOG_LEVEL_MSG as _PYSAWSIM_LOG_LEVEL_MSG
 from .histogram import Histogram
 from .manager import MANAGERS, get_manager
 from .sawsim import SawsimRunner
@@ -67,8 +68,10 @@ def main(argv=None):
     epilog = '\n'.join([
             'Generate an unfolding force histogram from a series of `sawsim`',
            'runs.',
-            ])
+            _PYSAWSIM_LOG_LEVEL_MSG,
+           ])
     parser = OptionParser(usage, epilog=epilog)
+    parser.format_epilog = lambda formatter: epilog+'\n'
     for option in sr.optparse_options:
         parser.add_option(option)
     parser.add_option('-w', '--bin-width', dest='bin_width',