diff options
Diffstat (limited to 'bin.py')
-rw-r--r-- | bin.py | 25 |
1 files changed, 17 insertions, 8 deletions
@@ -1,8 +1,10 @@ -import django +import argparse import logging import os import sys +import django + def django_setup(): try: @@ -22,7 +24,7 @@ def django_setup(): django.setup() -def _init_logging(): +def _init_logging(level): handler = logging.StreamHandler(stream=sys.stderr) formatter = logging.Formatter( '%(asctime)s %(levelname)-5s %(name)s: %(message)s', @@ -30,11 +32,18 @@ def _init_logging(): handler.setFormatter(formatter) l = logging.getLogger('') l.addHandler(handler) - l.setLevel(logging.INFO) -_init_logging.called = False + l.setLevel(getattr(logging, level)) + + +class LoggingAction(argparse.Action): + def __call__(self, parser, namespace, value, option_string=None): + log = logging.getLogger() + log.setLevel(getattr(logging, value)) + log.debug('logging level set to: %s', value) -def get_logger(name): - if not _init_logging.called: - _init_logging.called = _init_logging() - return logging.getLogger(name) +def add_logging_arguments(parser, level='WARN'): + _init_logging(level) + parser.add_argument('--log', default=level, action=LoggingAction, + choices=('WARN', 'INFO', 'DEBUG'), + help='Logging level to use. Default=%(default)s') |