在App/utils/ 新建loggings.py文件
from flask import request
import logging
import logging.handlers
import os
class RequestFormatter(logging.Formatter):
"""
针对请求信息的日志格式
"""
def format(self, record):
record.url = request.url
record.remote_addr = request.remote_addr
return super().format(record)
def create_logger(app):
"""
设置日志
:param app: Flask app对象
:return:
"""
logging_file_dir = app.config['LOGGING_FILE_DIR']
logging_file_max_bytes = app.config['LOGGING_FILE_MAX_BYTES']
logging_file_backup = app.config['LOGGING_FILE_BACKUP']
logging_level = app.config['LOGGING_LEVEL']
flask_console_handler = logging.StreamHandler()
flask_console_handler.setFormatter(logging.Formatter('%(levelname)s %(module)s %(lineno)d %(message)s'))
request_formatter = RequestFormatter('%(levelname)s [%(asctime)s] %(remote_addr)s -> %(url)s '
'%(module)s %(lineno)d: %(message)s')
cida_formatter = RequestFormatter('%(levelname)s [%(asctime)s] %(module)s %(lineno)d: %(message)s')
flask_file_handler = logging.handlers.RotatingFileHandler(
filename=os.path.join(logging_file_dir, 'flask.log'),
maxBytes=logging_file_max_bytes,
backupCount=logging_file_backup
)
flask_file_handler.setFormatter(request_formatter)
log_flask_app = logging.getLogger('flask.app')
log_flask_app.addHandler(flask_file_handler)
log_flask_app.setLevel(logging_level)
cida_file_handler = logging.handlers.RotatingFileHandler(
filename=os.path.join(logging_file_dir, 'xxx_action.log'),
maxBytes=logging_file_max_bytes,
backupCount=logging_file_backup
)
cida_file_handler.setFormatter(cida_formatter)
log_flask_cida = logging.getLogger('xxx.app')
log_flask_cida.addHandler(cida_file_handler)
log_flask_cida.setLevel(logging_level)
if app.debug:
log_flask_app.addHandler(flask_console_handler)
在App/__init__.py 的create_app 中新增配置
def create_app(env):
# 创建Flask的app对象
app = Flask(__name__)
... ...
# 配置日志
from .utils.loggings import create_logger
create_logger(app)
在App/settings.py中新增相关配置
# 日志
LOGGING_LEVEL = 'DEBUG'
LOGGING_FILE_DIR = './logs'
LOGGING_FILE_MAX_BYTES = 300 * 1024 * 1024
LOGGING_FILE_BACKUP = 10
如何在flask中使用???
在view页面,导入,使用
from flask import Blueprint
import logging
logger = logging.getLogger('xxx.app')
blue = Blueprint('blue', __name__)
def init_views(app):
app.register_blueprint(blue)
@blue.route('/')
def index():
logger.error('Error')
logger.warning('Warning')
logger.info("Info")
return "Index"日志如下:

版权声明:本文为Woodrow1994原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。