From 02e448092ef574080c72a3988e3a7ef8e0655c6e Mon Sep 17 00:00:00 2001 From: MarkusJoe Date: Sun, 24 Apr 2022 21:28:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=BA=86=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=99=A8=20->=20=E6=9B=B4=E6=8D=A2=E4=B8=BA=E4=BA=86=E5=86=85?= =?UTF-8?q?=E7=BD=AE=E6=97=A5=E5=BF=97=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/__init__.py | 10 ++------ app/config.py | 31 +++++++++++++++++++++-- app/utils/logger.py | 61 --------------------------------------------- 3 files changed, 31 insertions(+), 71 deletions(-) delete mode 100644 app/utils/logger.py diff --git a/app/__init__.py b/app/__init__.py index dc50eb5..1d692b4 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -13,9 +13,6 @@ from .main import main as main_blueprint from .api import api as api_blueprint from .config import config from .utils.password import generate_pwd -from .utils.logger import CreateLogger - -logger = CreateLogger().get_logger() def create_app(config_name): @@ -27,21 +24,19 @@ def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) config[config_name].init_app(app) - if os.environ.get('SSL_REDIRECT'): + if app.config['SSL_REDIRECT']: SSLify(app) app.register_blueprint(main_blueprint) app.register_blueprint(api_blueprint, url_prefix='/api/v1/') - CreateLogger.init_app(app) - if not os.getenv('ACCESS_KEY'): access_key = generate_pwd(32) os.environ['ACCESS_KEY'] = access_key else: access_key = os.getenv('ACCESS_KEY') - logger.info('Access Key: {}'.format(access_key)) + app.logger.info('Access Key: {}'.format(access_key)) return app @@ -51,6 +46,5 @@ __all__ = [ 'main', 'tests', 'utils', - 'logger', 'create_app' ] diff --git a/app/config.py b/app/config.py index a1d8f8a..81d88b0 100644 --- a/app/config.py +++ b/app/config.py @@ -7,16 +7,33 @@ import os +import logging +import platform +from logging.handlers import * class Config: JSON_SORT_KEYS = False JSON_AS_ASCII = False - SSL_REDIRECT = False if not os.environ.get('DYNO') else True + SSL_REDIRECT = False @staticmethod def init_app(app): - pass + formatter = logging.Formatter( + fmt='[%(asctime)s] |%(filename)s[%(funcName)s:%(lineno)d] |%(levelname)-8s |%(message)s', + datefmt='%H:%M:%S') + handler = logging.handlers.RotatingFileHandler(filename='./app/logs/access.log', + maxBytes=10240, + backupCount=10) + handler.setFormatter(formatter) + handler.setLevel(logging.DEBUG) + + if platform.system() == 'Linux': + syslog_handler = SysLogHandler() + syslog_handler.setLevel(logging.INFO) + app.logger.addHandler(syslog_handler) + + app.logger.addHandler(handler) class DevelopmentConfig(Config): @@ -27,9 +44,19 @@ class ProductionConfig(Config): DEBUG = False +class HerokuConfig(ProductionConfig): + SSL_REDIRECT = False if not os.environ.get('DYNO') else True + + +class ProfessionalConfig(ProductionConfig): + SSL_REDIRECT = True + + config = { 'development': DevelopmentConfig, 'production': ProductionConfig, + 'professional': ProfessionalConfig, + 'heroku': HerokuConfig, 'default': DevelopmentConfig } diff --git a/app/utils/logger.py b/app/utils/logger.py deleted file mode 100644 index 55c1b4b..0000000 --- a/app/utils/logger.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python3 -# -- coding:utf-8 -- -# @Author: markushammered@gmail.com -# @Development Tool: PyCharm -# @Create Time: 2022/4/11 -# @File Name: logger.py - - -import time -import logging.handlers -from colorlog import ColoredFormatter - - -class CreateLogger: - """创建日志器""" - - def __init__(self) -> None: - """ - 初始化类 - """ - self.date_format = '%H:%M:%S' - self.info_format_console = '%(log_color)s[%(asctime)s] |%(filename)-12s[%(lineno)s] |%(levelname)-8s |%(message)s' - self.info_format_file = '[%(asctime)s] |%(filename)s[%(funcName)sline:%(lineno)d] |%(levelname)-8s |%(message)s' - self.formatter = ColoredFormatter(fmt=self.info_format_console, - datefmt=self.date_format, - reset=True, - log_colors={ - 'DEBUG': 'light_purple', - 'INFO': 'light_cyan', - 'WARNING': 'yellow', - 'ERROR': 'red', - 'CRITICAL': 'red,bold_red'}) - self.formatter_file = logging.Formatter(fmt=self.info_format_file, - datefmt=self.date_format) - - def get_logger(self) -> logging.Logger: - """ - 设置日志器 - :return: - """ - logger = logging.getLogger(__name__) - logger.setLevel(logging.DEBUG) - console_logger = logging.StreamHandler() # 输出到终端 - console_logger.setFormatter(self.formatter) - log_name = time.strftime('%Y-%m-%d#%H') # 一小时内使用的日志文件都是同一个 - file_logger = logging.handlers.RotatingFileHandler(filename=f'./app/logs/{log_name}.log', - maxBytes=102400, - backupCount=5) # 每个日志文件最大102400字节(100Kb) - file_logger.setFormatter(self.formatter_file) - logger.addHandler(console_logger) - logger.addHandler(file_logger) - return logger - - @staticmethod - def init_app(app): - """ - 虚假的init_app静态方法 - :param app: - :return: - """ - pass