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