68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
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
|
|
) -> None:
|
|
"""
|
|
Convienience function that ensures eveything is ready
|
|
before running the main loop.
|
|
"""
|
|
# load environment variables
|
|
load_dotenv()
|
|
assert 'USER_ID' in os.environ, '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')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
user_id = initialise_app()
|
|
logging.warning('test message')
|