From 333f53b93eb43a0c5c11dc3bd226b00ed2a638ca Mon Sep 17 00:00:00 2001 From: rozetko Date: Fri, 19 Jun 2020 18:18:37 +0300 Subject: [PATCH 1/5] get logging level from config --- analytics/config.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/analytics/config.py b/analytics/config.py index a833df9..37633cb 100644 --- a/analytics/config.py +++ b/analytics/config.py @@ -11,20 +11,30 @@ if config_exists: with open(CONFIG_FILE) as f: config = json.load(f) else: - print('Config file %s doesn`t exist, using defaults' % CONFIG_FILE) + print('Config file %s doesn`t exist, using environment variables / defaults' % CONFIG_FILE) -def get_config_field(field: str, default_val = None): +def get_config_field(field: str, default_val = None, allowed_values = []): + value = None if field in os.environ: - return os.environ[field] + value = os.environ[field] + elif config_exists and field in config and config[field] != '': + value = config[field] + elif default_val is not None: + value = default_val - if config_exists and field in config and config[field] != '': - return config[field] + if len(allowed_values) > 0 and value not in allowed_values: + raise Exception('{} value must be one of: {}, got: {}'.format(field, allowed_values, value)) - if default_val is not None: - return default_val + if value == None: + raise Exception('Please configure {}'.format(field)) - raise Exception('Please configure {}'.format(field)) + return value HASTIC_SERVER_URL = get_config_field('HASTIC_SERVER_URL', 'ws://localhost:8002') +LOGGING_LEVEL = get_config_field( + 'HS_AL_LOGGING_LEVEL', + 'INFO', + ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] +) LEARNING_TIMEOUT = get_config_field('LEARNING_TIMEOUT', 120) From 59dac556ebd67de9991add3656243ef22661da7d Mon Sep 17 00:00:00 2001 From: rozetko Date: Fri, 19 Jun 2020 18:18:45 +0300 Subject: [PATCH 2/5] convert prints to logger.infos --- analytics/server.py | 3 ++- analytics/services/server_service.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/analytics/server.py b/analytics/server.py index c32ed01..77244bd 100644 --- a/analytics/server.py +++ b/analytics/server.py @@ -18,6 +18,7 @@ server_service: services.ServerService = None data_service: services.DataService = None analytic_unit_manager: AnalyticUnitManager = None +logging.root.setLevel(config.LOGGING_LEVEL) logger = logging.getLogger('SERVER') @@ -88,7 +89,7 @@ def run_server(): #loop.set_debug(True) logger.info("Ok") init_services() - print('Analytics process is running') # we need to print to stdout and flush + logger.info('Analytics process is running') # we need to print to stdout and flush sys.stdout.flush() # because node.js expects it loop.run_until_complete(app_loop()) diff --git a/analytics/services/server_service.py b/analytics/services/server_service.py index 9b3db03..5c49a93 100644 --- a/analytics/services/server_service.py +++ b/analytics/services/server_service.py @@ -111,7 +111,7 @@ class ServerService(utils.concurrent.AsyncZmqActor): self.__server_socket = None # TODO: move to config reconnect_delay = 3 - print('connection is refused or lost, trying to reconnect in %s seconds' % reconnect_delay) + logger.info('connection is refused or lost, trying to reconnect in %s seconds' % reconnect_delay) await asyncio.sleep(reconnect_delay) raise InterruptedError() From da334b94107cb10233e2042e02948d7b6c6a031e Mon Sep 17 00:00:00 2001 From: rozetko Date: Fri, 19 Jun 2020 18:39:19 +0300 Subject: [PATCH 3/5] minor fixes --- analytics/config.py | 1 + analytics/server.py | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/analytics/config.py b/analytics/config.py index 37633cb..5102f13 100644 --- a/analytics/config.py +++ b/analytics/config.py @@ -35,6 +35,7 @@ HASTIC_SERVER_URL = get_config_field('HASTIC_SERVER_URL', 'ws://localhost:8002') LOGGING_LEVEL = get_config_field( 'HS_AL_LOGGING_LEVEL', 'INFO', + # TODO: make values case insensitive ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] ) LEARNING_TIMEOUT = get_config_field('LEARNING_TIMEOUT', 120) diff --git a/analytics/server.py b/analytics/server.py index 77244bd..e518b34 100644 --- a/analytics/server.py +++ b/analytics/server.py @@ -86,10 +86,9 @@ async def app_loop(): def run_server(): loop = asyncio.get_event_loop() - #loop.set_debug(True) + logger.info("Ok") init_services() - logger.info('Analytics process is running') # we need to print to stdout and flush - sys.stdout.flush() # because node.js expects it + logger.info('Analytics process is running') loop.run_until_complete(app_loop()) From 6e088b76387ebac210bc099713b1c7e0bafd78eb Mon Sep 17 00:00:00 2001 From: rozetko Date: Mon, 22 Jun 2020 12:40:59 +0300 Subject: [PATCH 4/5] Update analytics/config.py Co-authored-by: Alexey Velikiy --- analytics/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/config.py b/analytics/config.py index 5102f13..f9a648a 100644 --- a/analytics/config.py +++ b/analytics/config.py @@ -26,7 +26,7 @@ def get_config_field(field: str, default_val = None, allowed_values = []): if len(allowed_values) > 0 and value not in allowed_values: raise Exception('{} value must be one of: {}, got: {}'.format(field, allowed_values, value)) - if value == None: + if value is None: raise Exception('Please configure {}'.format(field)) return value From d4d3e286e37467d9f5aa611b9657f27e292f395f Mon Sep 17 00:00:00 2001 From: rozetko Date: Mon, 22 Jun 2020 12:42:41 +0300 Subject: [PATCH 5/5] HS_AL_LOGGING_LEVEL -> HS_AN_LOGGING_LEVEL --- analytics/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/config.py b/analytics/config.py index f9a648a..1934f4b 100644 --- a/analytics/config.py +++ b/analytics/config.py @@ -33,7 +33,7 @@ def get_config_field(field: str, default_val = None, allowed_values = []): HASTIC_SERVER_URL = get_config_field('HASTIC_SERVER_URL', 'ws://localhost:8002') LOGGING_LEVEL = get_config_field( - 'HS_AL_LOGGING_LEVEL', + 'HS_AN_LOGGING_LEVEL', 'INFO', # TODO: make values case insensitive ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']