|
@@ -10,9 +10,6 @@ if os.environ.get("DEBUG", "false").lower() != "true":
|
|
|
grpc.experimental.gevent.init_gevent()
|
|
|
|
|
|
import json
|
|
|
-import logging
|
|
|
-import sys
|
|
|
-from logging.handlers import RotatingFileHandler
|
|
|
|
|
|
from flask import Flask, Response, request
|
|
|
from flask_cors import CORS
|
|
@@ -27,6 +24,7 @@ from extensions import (
|
|
|
ext_compress,
|
|
|
ext_database,
|
|
|
ext_hosting_provider,
|
|
|
+ ext_logging,
|
|
|
ext_login,
|
|
|
ext_mail,
|
|
|
ext_migrate,
|
|
@@ -70,43 +68,7 @@ def create_flask_app_with_configs() -> Flask:
|
|
|
|
|
|
def create_app() -> Flask:
|
|
|
app = create_flask_app_with_configs()
|
|
|
-
|
|
|
app.secret_key = app.config["SECRET_KEY"]
|
|
|
-
|
|
|
- log_handlers = None
|
|
|
- log_file = app.config.get("LOG_FILE")
|
|
|
- if log_file:
|
|
|
- log_dir = os.path.dirname(log_file)
|
|
|
- os.makedirs(log_dir, exist_ok=True)
|
|
|
- log_handlers = [
|
|
|
- RotatingFileHandler(
|
|
|
- filename=log_file,
|
|
|
- maxBytes=1024 * 1024 * 1024,
|
|
|
- backupCount=5,
|
|
|
- ),
|
|
|
- logging.StreamHandler(sys.stdout),
|
|
|
- ]
|
|
|
-
|
|
|
- logging.basicConfig(
|
|
|
- level=app.config.get("LOG_LEVEL"),
|
|
|
- format=app.config.get("LOG_FORMAT"),
|
|
|
- datefmt=app.config.get("LOG_DATEFORMAT"),
|
|
|
- handlers=log_handlers,
|
|
|
- force=True,
|
|
|
- )
|
|
|
- log_tz = app.config.get("LOG_TZ")
|
|
|
- if log_tz:
|
|
|
- from datetime import datetime
|
|
|
-
|
|
|
- import pytz
|
|
|
-
|
|
|
- timezone = pytz.timezone(log_tz)
|
|
|
-
|
|
|
- def time_converter(seconds):
|
|
|
- return datetime.utcfromtimestamp(seconds).astimezone(timezone).timetuple()
|
|
|
-
|
|
|
- for handler in logging.root.handlers:
|
|
|
- handler.formatter.converter = time_converter
|
|
|
initialize_extensions(app)
|
|
|
register_blueprints(app)
|
|
|
register_commands(app)
|
|
@@ -117,6 +79,7 @@ def create_app() -> Flask:
|
|
|
def initialize_extensions(app):
|
|
|
# Since the application instance is now created, pass it to each Flask
|
|
|
# extension instance to bind it to the Flask application instance (app)
|
|
|
+ ext_logging.init_app(app)
|
|
|
ext_compress.init_app(app)
|
|
|
ext_code_based_extension.init()
|
|
|
ext_database.init_app(app)
|