MRE/app/__init__.py

36 lines
1.0 KiB
Python
Raw Normal View History

2025-03-27 21:19:40 +00:00
from flask import Flask
import os
2025-03-27 22:06:01 +00:00
from app.MRE import mre_blueprint
from logging import Logger, Formatter, getLogger, DEBUG, INFO,
FileHandler
2025-03-27 21:19:40 +00:00
def load_config_from_environ(app: Flask) -> Flask:
for env_var in filter(lambda x: x.startswith(app.name.upper()), os.environ.keys()):
2025-03-27 21:19:40 +00:00
config_name = env_var[len(app.name):]
app.config[config_name] = os.environ[env_var]
return app
2025-03-27 21:20:36 +00:00
def init_logger(app: Flask, log_level=INFO) -> Flask:
logger = getLogger(app.name)
2025-03-27 21:19:40 +00:00
formatter = Formatter(f'[%(asctime)s] {app.name.upper()} %(levelname)s: %(message)s (%(filename)s.%(funcName)s)')
logger.setLevel(log_level)
to_file = FileHandler(os.environ.get('MRE_LOG_PATH', f'./{app.name}.log'))
to_file.setFormatter(formatter)
2025-03-27 21:19:40 +00:00
logger.addHandler(to_file)
app.logger = logger
2025-03-27 21:20:36 +00:00
return app
2025-03-27 21:19:40 +00:00
def create_app(app_name: str='MRE') -> Flask:
app = Flask(app_name)
2025-03-27 21:19:40 +00:00
app = load_config_from_environ(app)
2025-03-27 21:20:36 +00:00
app = init_logger(app)
2025-03-27 21:19:40 +00:00
2025-03-27 22:06:01 +00:00
app.register_blueprint(mre_blueprint)
2025-03-27 21:19:40 +00:00
return app