Archived
更改了日志器 -> 更换为了内置日志器
This commit is contained in:
3 files changed
+31
-71
No files matched your search
+2
-8
@@ -13,9 +13,6 @@ from .main import main as main_blueprint
|
|||||||
from .api import api as api_blueprint
|
from .api import api as api_blueprint
|
||||||
from .config import config
|
from .config import config
|
||||||
from .utils.password import generate_pwd
|
from .utils.password import generate_pwd
|
||||||
from .utils.logger import CreateLogger
|
|
||||||
|
|
||||||
logger = CreateLogger().get_logger()
|
|
||||||
|
|
||||||
|
|
||||||
def create_app(config_name):
|
def create_app(config_name):
|
||||||
@@ -27,21 +24,19 @@ def create_app(config_name):
|
|||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.config.from_object(config[config_name])
|
app.config.from_object(config[config_name])
|
||||||
config[config_name].init_app(app)
|
config[config_name].init_app(app)
|
||||||
if os.environ.get('SSL_REDIRECT'):
|
if app.config['SSL_REDIRECT']:
|
||||||
SSLify(app)
|
SSLify(app)
|
||||||
|
|
||||||
app.register_blueprint(main_blueprint)
|
app.register_blueprint(main_blueprint)
|
||||||
app.register_blueprint(api_blueprint, url_prefix='/api/v1/')
|
app.register_blueprint(api_blueprint, url_prefix='/api/v1/')
|
||||||
|
|
||||||
CreateLogger.init_app(app)
|
|
||||||
|
|
||||||
if not os.getenv('ACCESS_KEY'):
|
if not os.getenv('ACCESS_KEY'):
|
||||||
access_key = generate_pwd(32)
|
access_key = generate_pwd(32)
|
||||||
os.environ['ACCESS_KEY'] = access_key
|
os.environ['ACCESS_KEY'] = access_key
|
||||||
else:
|
else:
|
||||||
access_key = os.getenv('ACCESS_KEY')
|
access_key = os.getenv('ACCESS_KEY')
|
||||||
|
|
||||||
logger.info('Access Key: {}'.format(access_key))
|
app.logger.info('Access Key: {}'.format(access_key))
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|
||||||
@@ -51,6 +46,5 @@ __all__ = [
|
|||||||
'main',
|
'main',
|
||||||
'tests',
|
'tests',
|
||||||
'utils',
|
'utils',
|
||||||
'logger',
|
|
||||||
'create_app'
|
'create_app'
|
||||||
]
|
]
|
||||||
+29
-2
@@ -7,16 +7,33 @@
|
|||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import logging
|
||||||
|
import platform
|
||||||
|
from logging.handlers import *
|
||||||
|
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
JSON_SORT_KEYS = False
|
JSON_SORT_KEYS = False
|
||||||
JSON_AS_ASCII = False
|
JSON_AS_ASCII = False
|
||||||
SSL_REDIRECT = False if not os.environ.get('DYNO') else True
|
SSL_REDIRECT = False
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def init_app(app):
|
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):
|
class DevelopmentConfig(Config):
|
||||||
@@ -27,9 +44,19 @@ class ProductionConfig(Config):
|
|||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
|
|
||||||
|
class HerokuConfig(ProductionConfig):
|
||||||
|
SSL_REDIRECT = False if not os.environ.get('DYNO') else True
|
||||||
|
|
||||||
|
|
||||||
|
class ProfessionalConfig(ProductionConfig):
|
||||||
|
SSL_REDIRECT = True
|
||||||
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
'development': DevelopmentConfig,
|
'development': DevelopmentConfig,
|
||||||
'production': ProductionConfig,
|
'production': ProductionConfig,
|
||||||
|
'professional': ProfessionalConfig,
|
||||||
|
'heroku': HerokuConfig,
|
||||||
|
|
||||||
'default': DevelopmentConfig
|
'default': DevelopmentConfig
|
||||||
}
|
}
|
||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user