diff --git a/analytics/config.py b/analytics/config.py index a833df9..1934f4b 100644 --- a/analytics/config.py +++ b/analytics/config.py @@ -11,20 +11,31 @@ 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 is 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_AN_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 c32ed01..e518b34 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') @@ -85,10 +86,9 @@ async def app_loop(): def run_server(): loop = asyncio.get_event_loop() - #loop.set_debug(True) + logger.info("Ok") init_services() - print('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()) 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()