diff --git a/code/initialise_app.py b/code/initialise_app.py index bd3513b..2307209 100644 --- a/code/initialise_app.py +++ b/code/initialise_app.py @@ -1,60 +1,63 @@ from discord_logging.handler import DiscordHandler from dotenv import load_dotenv +from configparser import ConfigParser +from pathlib import Path import logging import os -def initialise_app(): +# load default values +config = ConfigParser() +config.read(Path(__file__).parent / 'defaults.ini') +LOGGER_LEVEL = config.get('main', 'logger_level') +DISCORD_SERVICE_NAME = config.get('discord', 'service_name') +DISCORD_WEBHOOK_URL = config.get('discord', 'webhook_url') +DISCORD_LOGGER_LEVEL = config.get('discord', 'logger_level') + + +def initialise_app( + logger_level: str = LOGGER_LEVEL, + discord_service_name: str = DISCORD_SERVICE_NAME, + discord_webhook_url: str = DISCORD_WEBHOOK_URL, + discord_logger_level: str = DISCORD_LOGGER_LEVEL +): """ Convienience function that ensures eveything is ready before running the main loop. """ - # load environment variables from file + # load environment variables load_dotenv() + logger_level = os.getenv( + 'LOGGER_LEVEL', + default=LOGGER_LEVEL + ) + discord_service_name = os.getenv( + 'DISCORD_SERVICE_NAME', + default=DISCORD_SERVICE_NAME + ) + discord_webhook_url = os.getenv( + 'DISCORD_WEBHOOK_URL', + default=DISCORD_WEBHOOK_URL + ) + discord_logger_level = os.getenv( + 'DISCORD_LOGGER_LEVEL', + default=DISCORD_LOGGER_LEVEL + ) # setup logging fmt = '|%(asctime)s| %(levelname)s %(filename)s:%(funcName)s:%(message)s' datefmt = '%Y-%m-%d %H:%M:%S' - logger_level = os.getenv('LOGGER_LEVEL', default=None) - if logger_level is None: - logger_level = 'info' - logging.info( - 'environment variable LOGGER_LEVEL not set. ' - 'Using default (info)' - ) level = getattr(logging, logger_level.upper()) logging.basicConfig(format=fmt, datefmt=datefmt, level=level) # setup logging to discord - discord_url = os.getenv('DISCORD_URL', default=None) - assert discord_url is not None logger = logging.getLogger() discord_handler = DiscordHandler( - service_name='bandwidth_probing', - webhook_url=discord_url, + service_name=discord_service_name, + webhook_url=discord_webhook_url, ) discord_handler.setFormatter(logging.Formatter('%(message)s')) - discord_handler.setLevel(logging.WARNING) + level = getattr(logging, discord_logger_level.upper()) + discord_handler.setLevel(level=level) logger.addHandler(discord_handler) - # ensure environment variables are set - necessary_list = [ - 'DB_IP_ADDRESS', - 'DB_NAME', - 'DB_COLLECTION_NAME' - ] - for var in necessary_list: - assert var in os.environ, f'environment variable {var} not set.' - # set defaults if not yet handled - default_dict = { - 'USER_ID': 0, - 'REPLICATES': 3, - 'TRIGGER_INTERVAL_SECONDS': 60 - } - for k, v in default_dict.items(): - if k not in os.environ: - logging.info( - f'environment variable {k} not set. ' - f'Using default ({v}).' - ) - os.environ[k] = str(v) if __name__ == '__main__':