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 .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'
|
||||
]
|
||||
+29
-2
@@ -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
|
||||
}
|
||||
@@ -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