diff --git a/code/initialise_app.py b/code/initialise_app.py new file mode 100644 index 0000000..e08d952 --- /dev/null +++ b/code/initialise_app.py @@ -0,0 +1,55 @@ +from discord_logging.handler import DiscordHandler +from dotenv import load_dotenv +import logging +import os + + +def initialise_app(): + """ + Convienience function that ensures eveything is ready before running main loop. + """ + # load environment variables from file + load_dotenv() + # 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(f'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, + ) + discord_handler.setFormatter(logging.Formatter('%(message)s')) + discord_handler.setLevel(logging.WARNING) + 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 not k in os.environ: + logging.info(f'environment variable {k} not set. Using default ({v}).') + os.environ[k] = str(v) + + +if __name__ == '__main__': + initialise_app() + logging.warning('test message') \ No newline at end of file