flask-logging模塊


logging模塊

flask配置日志

代碼

from logging.handlers import RotatingFileHandler
from flask import Flask, request
import logging
app = Flask(__name__)
app.config['PROPAGATE_EXCEPTIONS'] = False  # 設置是否傳遞異常 , 如果為True, 則flask運行中的錯誤會顯示到網頁中, 如果為False, 則會輸出到文件中


class RequestFormatter(logging.Formatter):  # 自定義格式化類
    def format(self, record):
        """每次生成日志時都會調用, 該方法主要用於設置自定義的日志信息
        :param record 日志信息"""
        record.url = request.url  # 獲取請求的url
        record.remote_addr = request.remote_addr  # 獲取客戶端的ip

        return super().format(record)  # 執行父類的默認操作


# flask中提供了兩個日志  1> werkzeug 記錄web應用運行中出現的錯誤  2> flask.app  給開發者預留的日志
# flask中的運行錯誤也會記錄到flask.app的日志中
def create_logger():
    """配置flask日志"""
    # 創建flask.app日志器
    flask_logger = logging.getLogger('flask.app')
    # 設置全局級別
    flask_logger.setLevel('DEBUG')

    # 創建控制台處理器
    console_handler = logging.StreamHandler()

    # 給處理器設置輸出格式
    console_formatter = logging.Formatter(fmt='%(name)s %(levelname)s %(pathname)s %(lineno)d %(message)s')
    console_handler.setFormatter(console_formatter)

    # 日志器添加處理器
    flask_logger.addHandler(console_handler)

    # 創建文件處理器
    file_handler = RotatingFileHandler(filename='flask.log', maxBytes=100 * 1024 * 1024, backupCount=10)  # 轉存文件處理器  當達到限定的文件大小時, 可以將日志轉存到其他文件中

    # 給處理器設置輸出格式
    file_formatter = RequestFormatter(fmt='[%(asctime)s] %(remote_addr)s requested %(url)s %(name)s %(levelname)s %(pathname)s %(lineno)d %(message)s')
    file_handler.setFormatter(file_formatter)
    # 單獨設置文件處理器的日志級別
    file_handler.setLevel('WARN')

    # 日志器添加處理器
    flask_logger.addHandler(file_handler)


@app.route('/')
def index():
    # num = 1 / 0
    app.logger.error('this is a error')
    return "index"


if __name__ == '__main__':
    create_logger()
    app.run(debug=True)

自定義日志信息

項目中配置日志

  • 在 家目錄中手動創建log文件夾
# 查看最新的⽇日志
tail flask.log # 默認查看最新的10⾏行行⽇日志
tail -n 100 flask.log # 默認查看最新的100⾏行行⽇日志
tail -f flask.log # 動態監聽⽇日志


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM