123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- from flask import Flask
- from flask.logging import default_handler
- from flask_login import LoginManager
- import configure
- from . import home
- from . import test
- from . import user
- import logging.handlers
- import logging
- import os
- import sys
- class HEnglishFlask(Flask):
- def __init__(self, import_name, **kwargs):
- super().__init__(import_name, **kwargs)
- self.logger: logging.Logger
- self.logger.removeHandler(default_handler)
- self.logger.propagate = False
- self.logger.setLevel({"DEBUG": logging.DEBUG,
- "INFO": logging.INFO,
- "WARNING": logging.WARNING,
- "ERROR": logging.ERROR}.get(configure.conf["LOG_LEVEL"], logging.INFO))
- if len(configure.conf["LOG_HOME"]):
- handle = logging.handlers.TimedRotatingFileHandler(
- os.path.join(configure.conf["LOG_HOME"], f"flask-{os.getpid()}.log"))
- handle.setFormatter(logging.Formatter("%(levelname)s:%(name)s:%(asctime)s "
- "(%(filename)s:%(lineno)d %(funcName)s) "
- "%(process)d %(thread)d "
- "%(message)s"))
- self.logger.addHandler(handle)
- if configure.conf["LOG_STDERR"]:
- handle = logging.StreamHandler(sys.stderr)
- handle.setFormatter(logging.Formatter("%(levelname)s:%(name)s:%(asctime)s "
- "(%(filename)s:%(lineno)d %(funcName)s) "
- "%(process)d %(thread)d "
- "%(message)s"))
- self.logger.addHandler(handle)
- self.update_config()
- self.login_manager = LoginManager()
- self.login_manager.init_app(self)
- self.login_manager.anonymous_user = user.AnonymousUser # 设置未登录的匿名对象
- @self.context_processor
- def inject_base():
- return {"title": self.config["TITLE"],
- "about": self.config["ABOUT"]}
- @self.login_manager.user_loader
- def user_loader(name: str):
- return user.load_user(name, None)
- self.register_blueprint(home.home, url_prefix="/")
- self.register_blueprint(test.test, url_prefix="/test")
- def update_config(self):
- self.config.update(configure.conf)
- self.logger.info("Update config")
|