flask日誌設定
阿新 • • 發佈:2021-02-19
在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"
日誌如下: