From 1e64bb674d9adf608b9feda24acb6fe2c737f0d2 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:45:45 -0500 Subject: [PATCH 01/11] simplify warning capture --- beaver/utils.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index 604cc058..398c3b0f 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -86,12 +86,11 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None if debug: logger.setLevel(logging.DEBUG) - if hasattr(logging, 'captureWarnings'): - logging.captureWarnings(True) else: logger.setLevel(logging.INFO) - if hasattr(logging, 'captureWarnings'): - logging.captureWarnings(False) + + if hasattr(logging, 'captureWarnings'): + logging.captureWarnings(debug==True) logger.debug('Logger level is {0}'.format(logging.getLevelName(logger.level))) From 3853c1ce4cafe27397cb49afb2a21da45f4c0cdf Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:48:16 -0500 Subject: [PATCH 02/11] simplify some has_args logic --- beaver/utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index 398c3b0f..2b7cf8bb 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -53,22 +53,22 @@ def parse_args(): def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None): + if args is not None and type(args) == argparse.Namespace: + if debug is None: + debug = args.debug is True + if output is None: + output = args.output + logger = logging.getLogger(name) logger.propagate = False if logger.handlers: logger.handlers = [] - has_args = args is not None and type(args) == argparse.Namespace - if debug is None: - debug = has_args and args.debug is True - if not logger.handlers: if formatter is None: formatter = logging.Formatter('[%(asctime)s] %(levelname)-7s %(message)s') handler = logging.StreamHandler() - if output is None and has_args: - output = args.output if output: output = os.path.realpath(output) From 1479d450c406b4d87959ea2d072640eb7daed5a0 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:49:04 -0500 Subject: [PATCH 03/11] flatten two if statements --- beaver/utils.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index 2b7cf8bb..c049d4e6 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -59,20 +59,19 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None if output is None: output = args.output + if formatter is None: + formatter = logging.Formatter('[%(asctime)s] %(levelname)-7s %(message)s') + if output: + output = os.path.realpath(output) + logger = logging.getLogger(name) logger.propagate = False + if logger.handlers: logger.handlers = [] if not logger.handlers: - if formatter is None: - formatter = logging.Formatter('[%(asctime)s] %(levelname)-7s %(message)s') - handler = logging.StreamHandler() - - if output: - output = os.path.realpath(output) - if output is not None: file_handler = logging.FileHandler(output) if formatter is not False: From 7859a6ae47e2ac518704a523cff7a43e50ee4a72 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:51:35 -0500 Subject: [PATCH 04/11] simplify handler/formatter setting code --- beaver/utils.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index c049d4e6..f105ed0f 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -70,17 +70,15 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None if logger.handlers: logger.handlers = [] + handlers = [] if not logger.handlers: - handler = logging.StreamHandler() + handlers.append(logging.StreamHandler()) if output is not None: - file_handler = logging.FileHandler(output) - if formatter is not False: - file_handler.setFormatter(formatter) - logger.addHandler(file_handler) + handlers.append(logging.FileHandler(output)) + for handler in handlers: if formatter is not False: handler.setFormatter(formatter) - logger.addHandler(handler) if debug: From 88d533048daad79c230c29a0e01335ef5ee460e5 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:52:00 -0500 Subject: [PATCH 05/11] always reset attached handlers --- beaver/utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index f105ed0f..25e81005 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -66,9 +66,7 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None logger = logging.getLogger(name) logger.propagate = False - - if logger.handlers: - logger.handlers = [] + logger.handlers = [] handlers = [] if not logger.handlers: From 0e06accb2a13b12112410b8bce982f16bb702e9d Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:52:35 -0500 Subject: [PATCH 06/11] simplify if statement --- beaver/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beaver/utils.py b/beaver/utils.py index 25e81005..bff3b085 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -71,7 +71,7 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None handlers = [] if not logger.handlers: handlers.append(logging.StreamHandler()) - if output is not None: + if output: handlers.append(logging.FileHandler(output)) for handler in handlers: From 786b639a03a6f6b5d8db75cb5eaf55f73d58a80c Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:53:00 -0500 Subject: [PATCH 07/11] handlers are always reset --- beaver/utils.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index bff3b085..d67dab79 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -69,10 +69,9 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None logger.handlers = [] handlers = [] - if not logger.handlers: - handlers.append(logging.StreamHandler()) - if output: - handlers.append(logging.FileHandler(output)) + handlers.append(logging.StreamHandler()) + if output: + handlers.append(logging.FileHandler(output)) for handler in handlers: if formatter is not False: From 1b751e868fe3d76de440b1d821c9f9401c543f69 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 3 Nov 2013 23:53:39 -0500 Subject: [PATCH 08/11] realpath on output should only be called once --- beaver/utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index d67dab79..8b370214 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -61,8 +61,6 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None if formatter is None: formatter = logging.Formatter('[%(asctime)s] %(levelname)-7s %(message)s') - if output: - output = os.path.realpath(output) logger = logging.getLogger(name) logger.propagate = False @@ -71,7 +69,7 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None handlers = [] handlers.append(logging.StreamHandler()) if output: - handlers.append(logging.FileHandler(output)) + handlers.append(logging.FileHandler(os.path.realpath(output))) for handler in handlers: if formatter is not False: From c16ff6fb1b45b028291588b71ea805fabc9c170d Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 4 Nov 2013 00:00:10 -0500 Subject: [PATCH 09/11] allow setting of arbitrary log levels for beaver --- beaver/utils.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index 8b370214..24ad058c 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -35,7 +35,7 @@ def parse_args(): parser = argparse.ArgumentParser(description='Beaver logfile shipper', epilog=epilog_example, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('-c', '--configfile', help='ini config file path', dest='config', default='/dev/null') parser.add_argument('-C', '--confd-path', help='path to conf.d directory', dest='confd_path', default='/etc/beaver/conf.d') - parser.add_argument('-d', '--debug', help='enable debug mode', dest='debug', default=False, action='store_true') + parser.add_argument('-L', '--loglevel', help='set log level', dest='loglevel', default='info') parser.add_argument('-D', '--daemonize', help='daemonize in the background', dest='daemonize', default=False, action='store_true') parser.add_argument('-f', '--files', help='space-separated filelist to watch, can include globs (*.log). Overrides --path argument', dest='files', default=None, nargs='+') parser.add_argument('-F', '--format', help='format to use when sending to transport', default=None, dest='format', choices=['json', 'msgpack', 'raw', 'rawjson', 'string']) @@ -53,18 +53,22 @@ def parse_args(): def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None): + loglevel = logging.INFO if args is not None and type(args) == argparse.Namespace: - if debug is None: - debug = args.debug is True + loglevel = args.loglevel if output is None: output = args.output + if type(loglevel) == str: + loglevel = loglevel.upper() + if formatter is None: formatter = logging.Formatter('[%(asctime)s] %(levelname)-7s %(message)s') logger = logging.getLogger(name) logger.propagate = False logger.handlers = [] + logger.setLevel(loglevel) handlers = [] handlers.append(logging.StreamHandler()) @@ -76,13 +80,8 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None handler.setFormatter(formatter) logger.addHandler(handler) - if debug: - logger.setLevel(logging.DEBUG) - else: - logger.setLevel(logging.INFO) - if hasattr(logging, 'captureWarnings'): - logging.captureWarnings(debug==True) + logging.captureWarnings(logging.getLevelName()=='DEBUG') logger.debug('Logger level is {0}'.format(logging.getLevelName(logger.level))) From 3367de23bddb4a6f283de56a6c55818afef94182 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 4 Nov 2013 00:00:59 -0500 Subject: [PATCH 10/11] move around some logging logic --- beaver/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/beaver/utils.py b/beaver/utils.py index 24ad058c..3180abee 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -65,16 +65,16 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None if formatter is None: formatter = logging.Formatter('[%(asctime)s] %(levelname)-7s %(message)s') - logger = logging.getLogger(name) - logger.propagate = False - logger.handlers = [] - logger.setLevel(loglevel) - handlers = [] handlers.append(logging.StreamHandler()) if output: handlers.append(logging.FileHandler(os.path.realpath(output))) + logger = logging.getLogger(name) + logger.propagate = False + logger.handlers = [] + logger.setLevel(loglevel) + for handler in handlers: if formatter is not False: handler.setFormatter(formatter) From a2763cb7f28b9d2aecd3b9de4fad5c1785cb48e2 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 4 Nov 2013 00:01:18 -0500 Subject: [PATCH 11/11] properly retrieve level --- beaver/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beaver/utils.py b/beaver/utils.py index 3180abee..80e59bbe 100644 --- a/beaver/utils.py +++ b/beaver/utils.py @@ -81,7 +81,7 @@ def setup_custom_logger(name, args=None, output=None, formatter=None, debug=None logger.addHandler(handler) if hasattr(logging, 'captureWarnings'): - logging.captureWarnings(logging.getLevelName()=='DEBUG') + logging.captureWarnings(logging.getLevelName(logger.level)=='DEBUG') logger.debug('Logger level is {0}'.format(logging.getLevelName(logger.level)))