Define better warning facility.
This commit is contained in:
parent
01ca5910ec
commit
c63ab44c9c
6 changed files with 68 additions and 17 deletions
|
@ -20,9 +20,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
|
||||||
import hashlib
|
import hashlib
|
||||||
|
|
||||||
|
import cdist.log
|
||||||
import cdist.version
|
import cdist.version
|
||||||
|
|
||||||
VERSION = cdist.version.VERSION
|
VERSION = cdist.version.VERSION
|
||||||
|
|
|
@ -17,13 +17,20 @@ EPILOG = "Get cdist at http://www.nico.schottelius.org/software/cdist/"
|
||||||
parser = None
|
parser = None
|
||||||
|
|
||||||
|
|
||||||
|
_verbosity_level_off = -2
|
||||||
|
_verbosity_level_debug = 3
|
||||||
_verbosity_level = {
|
_verbosity_level = {
|
||||||
0: logging.ERROR,
|
_verbosity_level_off: logging.OFF,
|
||||||
1: logging.WARNING,
|
-1: logging.ERROR,
|
||||||
2: logging.INFO,
|
0: logging.WARNING,
|
||||||
|
1: logging.INFO,
|
||||||
|
2: logging.VERBOSE,
|
||||||
|
3: logging.DEBUG,
|
||||||
|
4: logging.TRACE,
|
||||||
}
|
}
|
||||||
|
# All verbosity levels above 4 are TRACE.
|
||||||
_verbosity_level = collections.defaultdict(
|
_verbosity_level = collections.defaultdict(
|
||||||
lambda: logging.DEBUG, _verbosity_level)
|
lambda: logging.TRACE, _verbosity_level)
|
||||||
|
|
||||||
|
|
||||||
def add_beta_command(cmd):
|
def add_beta_command(cmd):
|
||||||
|
@ -83,13 +90,18 @@ def get_parsers():
|
||||||
'-d', '--debug',
|
'-d', '--debug',
|
||||||
help=('Set log level to debug (deprecated, use -vvv instead)'),
|
help=('Set log level to debug (deprecated, use -vvv instead)'),
|
||||||
action='store_true', default=False)
|
action='store_true', default=False)
|
||||||
|
parser['loglevel'].add_argument(
|
||||||
|
'-q', '--quiet',
|
||||||
|
help='Quiet mode: disables logging, including WARNING and ERROR',
|
||||||
|
action='store_true', default=False)
|
||||||
parser['loglevel'].add_argument(
|
parser['loglevel'].add_argument(
|
||||||
'-v', '--verbose',
|
'-v', '--verbose',
|
||||||
help=('Increase the verbosity level. Every instance of -v '
|
help=('Increase the verbosity level. Every instance of -v '
|
||||||
'increments the verbosity level by one. Its default value '
|
'increments the verbosity level by one. Its default value '
|
||||||
'is 0. There are 4 levels of verbosity. The order of levels '
|
'is 0 which includes ERROR and WARNING levels. '
|
||||||
'from the lowest to the highest are: ERROR (0), '
|
'The levels, in order from the lowest to the highest, are: '
|
||||||
'WARNING (1), INFO (2) and DEBUG (3 or higher).'),
|
'ERROR (-1), WARNING (0), INFO (1), VERBOSE (2), DEBUG (3) '
|
||||||
|
'TRACE (4 or higher).'),
|
||||||
action='count', default=0)
|
action='count', default=0)
|
||||||
|
|
||||||
parser['beta'] = argparse.ArgumentParser(add_help=False)
|
parser['beta'] = argparse.ArgumentParser(add_help=False)
|
||||||
|
@ -213,10 +225,13 @@ def get_parsers():
|
||||||
def handle_loglevel(args):
|
def handle_loglevel(args):
|
||||||
if args.debug:
|
if args.debug:
|
||||||
retval = "-d/--debug is deprecated, use -vvv instead"
|
retval = "-d/--debug is deprecated, use -vvv instead"
|
||||||
args.verbose = 3
|
args.verbose = _verbosity_level_debug
|
||||||
else:
|
else:
|
||||||
retval = None
|
retval = None
|
||||||
|
|
||||||
|
if args.quiet:
|
||||||
|
args.verbose = _verbosity_level_off
|
||||||
|
|
||||||
logging.root.setLevel(_verbosity_level[args.verbose])
|
logging.root.setLevel(_verbosity_level[args.verbose])
|
||||||
|
|
||||||
return retval
|
return retval
|
||||||
|
|
35
cdist/log.py
35
cdist/log.py
|
@ -23,6 +23,31 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
# Define additional cdist logging levels.
|
||||||
|
logging.OFF = logging.CRITICAL + 10 # disable logging
|
||||||
|
logging.addLevelName(logging.OFF, 'OFF')
|
||||||
|
|
||||||
|
logging.VERBOSE = logging.INFO - 5
|
||||||
|
logging.addLevelName(logging.VERBOSE, 'VERBOSE')
|
||||||
|
|
||||||
|
|
||||||
|
def _verbose(msg, *args, **kwargs):
|
||||||
|
logging.log(logging.VERBOSE, msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
logging.verbose = _verbose
|
||||||
|
|
||||||
|
logging.TRACE = logging.DEBUG - 5
|
||||||
|
logging.addLevelName(logging.TRACE, 'TRACE')
|
||||||
|
|
||||||
|
|
||||||
|
def _trace(msg, *args, **kwargs):
|
||||||
|
logging.log(logging.TRACE, msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
logging.trace = _trace
|
||||||
|
|
||||||
|
|
||||||
class Log(logging.Logger):
|
class Log(logging.Logger):
|
||||||
|
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
|
@ -37,3 +62,13 @@ class Log(logging.Logger):
|
||||||
record.msg = self.name + ": " + str(record.msg)
|
record.msg = self.name + ": " + str(record.msg)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def verbose(self, msg, *args, **kwargs):
|
||||||
|
self.log(logging.VERBOSE, msg, *args, **kwargs)
|
||||||
|
|
||||||
|
def trace(self, msg, *args, **kwargs):
|
||||||
|
self.log(logging.TRACE, msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
logging.setLoggerClass(Log)
|
||||||
|
logging.basicConfig(format='%(levelname)s: %(message)s')
|
||||||
|
|
|
@ -45,7 +45,7 @@ def resolve_target_host_name(host):
|
||||||
log.debug("derived host_name for host \"{}\": {}".format(
|
log.debug("derived host_name for host \"{}\": {}".format(
|
||||||
host, host_name))
|
host, host_name))
|
||||||
except (socket.gaierror, socket.herror) as e:
|
except (socket.gaierror, socket.herror) as e:
|
||||||
log.warn("Could not derive host_name for {}"
|
log.warning("Could not derive host_name for {}"
|
||||||
", $host_name will be empty. Error is: {}".format(host, e))
|
", $host_name will be empty. Error is: {}".format(host, e))
|
||||||
# in case of error provide empty value
|
# in case of error provide empty value
|
||||||
host_name = ''
|
host_name = ''
|
||||||
|
@ -59,7 +59,7 @@ def resolve_target_fqdn(host):
|
||||||
log.debug("derived host_fqdn for host \"{}\": {}".format(
|
log.debug("derived host_fqdn for host \"{}\": {}".format(
|
||||||
host, host_fqdn))
|
host, host_fqdn))
|
||||||
except socket.herror as e:
|
except socket.herror as e:
|
||||||
log.warn("Could not derive host_fqdn for {}"
|
log.warning("Could not derive host_fqdn for {}"
|
||||||
", $host_fqdn will be empty. Error is: {}".format(host, e))
|
", $host_fqdn will be empty. Error is: {}".format(host, e))
|
||||||
# in case of error provide empty value
|
# in case of error provide empty value
|
||||||
host_fqdn = ''
|
host_fqdn = ''
|
||||||
|
|
|
@ -50,12 +50,16 @@ All commands accept the following options:
|
||||||
|
|
||||||
Set log level to debug (deprecated, use -vvv instead)
|
Set log level to debug (deprecated, use -vvv instead)
|
||||||
|
|
||||||
|
.. option:: -q, --quiet
|
||||||
|
|
||||||
|
Quiet mode: disables logging, including WARNING and ERROR
|
||||||
|
|
||||||
.. option:: -v, --verbose
|
.. option:: -v, --verbose
|
||||||
|
|
||||||
Increase the verbosity level. Every instance of -v increments the verbosity
|
Increase the verbosity level. Every instance of -v increments the verbosity
|
||||||
level by one. Its default value is 0. There are 4 levels of verbosity. The
|
level by one. Its default value is 0 which includes ERROR and WARNING levels.
|
||||||
order of levels from the lowest to the highest are: ERROR (0), WARNING (1),
|
The levels, in order from the lowest to the highest, are:
|
||||||
INFO (2) and DEBUG (3 or higher).
|
ERROR (-1), WARNING (0), INFO (1), VERBOSE (2), DEBUG (3) TRACE (4 or higher).
|
||||||
|
|
||||||
.. option:: -V, --version
|
.. option:: -V, --version
|
||||||
|
|
||||||
|
|
|
@ -80,10 +80,7 @@ if __name__ == "__main__":
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import cdist
|
import cdist
|
||||||
import cdist.log
|
|
||||||
|
|
||||||
logging.setLoggerClass(cdist.log.Log)
|
|
||||||
logging.basicConfig(format='%(levelname)s: %(message)s')
|
|
||||||
log = logging.getLogger("cdist")
|
log = logging.getLogger("cdist")
|
||||||
|
|
||||||
if re.match("__", os.path.basename(sys.argv[0])):
|
if re.match("__", os.path.basename(sys.argv[0])):
|
||||||
|
|
Loading…
Reference in a new issue