import os import json import dotenv import logging import logging.config from pythonjsonlogger import jsonlogger # https://hackersandslackers.com/configure-flask-applications/ # app_root = os.path.dirname(os.path.abspath(__file__)) credentials_directory = os.path.join(app_root, '../instances') # REPLACE CREDENTIALS.env WITH CORRECT FILE NAME dotenv.load_dotenv(os.path.join(credentials_directory, 'CREDENTIALS.env')) db_creds_path = os.path.join(credentials_directory, 'dbcreds.json') class Config: APP_NAME = 'APP_NAME' APP_ROOT = app_root SECRET_KEY = os.environ.get('SECRET_KEY') FLASK_ENV = os.environ.get('FLASK_ENV') FORMATTER = jsonlogger.JsonFormatter('%(asctime)s %(name)s %(levelname)s %(lineno)s %(message)s', static_fields={'app_name': '[{}]'.format(APP_NAME)}) DB_CREDS = {} with open(db_creds_path, 'r') as in_file: DB_CREDS = json.load(in_file) class ProdConfig( Config ): LOGGER = None DEBUG = False TESTING = False class LocalConfig( Config ): DEBUG = True TESTING = True log_path = os.path.join(Config.APP_ROOT, 'logs') log_filename = os.path.join(log_path, '{}_local.log'.format(Config.APP_NAME)) LOGGER = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) #LOGGER = logging.getLogger('{}'.format(Config.APP_NAME)) logger_file_handler = logging.FileHandler(log_filename) logger_file_handler.setLevel(logging.INFO) formatter = Config.FORMATTER logger_file_handler.setFormatter(formatter) LOGGER.addHandler(logger_file_handler) LOGGER.setLevel(logging.DEBUG)