from discord_logging.handler import DiscordHandler from dotenv import load_dotenv from configparser import ConfigParser from pathlib import Path import logging import os # 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 ) -> int: """ Convienience function that ensures eveything is ready before running the main loop. """ # load environment variables load_dotenv() user_id = int(os.getenv('USER_ID', default=None)) assert user_id is not None, 'environment variable USER_ID must be specified' 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' level = getattr(logging, logger_level.upper()) logging.basicConfig(format=fmt, datefmt=datefmt, level=level) # setup logging to discord logger = logging.getLogger() discord_handler = DiscordHandler( service_name=discord_service_name, webhook_url=discord_webhook_url, ) discord_handler.setFormatter(logging.Formatter('%(message)s')) level = getattr(logging, discord_logger_level.upper()) discord_handler.setLevel(level=level) logger.addHandler(discord_handler) logging.debug('finished') return user_id if __name__ == '__main__': user_id = initialise_app() logging.warning('test message')