flask之日志的配置


1. 項目中,日志和配置文件都是單獨在一個文件夾中,一般log文件夾和config文件夾,兩個文件夾和manage.py在同一個目錄下。

2. 配置日志前,先給flask裝上script腳本擴展,Flask 1.1.1 版本

from flask.ext.script import Manager
# 報錯 no module named flask.ext
解決辦法:from flask_script import  Manager  網上說是新版flask推薦這種方式導入擴展包
# 繼續報錯:no module named flask_script 
解決辦法:pip install flask_script
# 繼續報錯: ModuleNotFoundError: No module named 'setuptools'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
# 分析,原來是 沒有安裝 setuptools

# 安裝 setuptools
pip install setuptools 

# pip install flask_script

# 然后解決問題

from flask_script import Manager

 

用Manager來管理app

manage.py

from logs.logs import create_app, setup_log
from flask import url_for,redirect
from flask_script import Manager
from config.config import Config
import logging

app = create_app("development") # 這里通過一個函數創建了app的實例對象
manage = Manager(app) # 創建Manager的實例對象,參數是app對象 

@app.route("/")
def index():
    logging.debug("測試打印日志")
    # logging.warning("測試打印日志")
    # logging.error("測試打印日志")
    return "index page"

# 傳遞路徑參數,通過視圖函數的形參傳遞
@app.route("/hello/<username>")
def hello(username):
    logging.debug(username)
    return "hello page" + username


# 轉換器:可以將傳遞的參數進行類型轉換
@app.route("/user/<int:p_id>")
def converter_int(p_id):
    logging.warning(str(p_id))
    return "p_id: " + str(p_id)

# 構建url
@app.route("/new")
def make_url():
    """
    url_for(視圖函數的名字,鏈接后面的參數)
    :return:
    """
    new_url = url_for('hello', username="zhangyanyan")
    print(new_url)
    return redirect(new_url)


if __name__ == '__main__':
manage.run() 啟動方式變成:manage.py目錄下,python manage.py runserver 啟動項目

 

logs/logs.py

import logging
from logging.handlers import RotatingFileHandler
from flask import Flask
from config.config import config


def setup_log(config_name):
    """

    :param config_name: 傳入日志等級
    :return:
    """
    # 設置日志的的登記
    logging.basicConfig(level=config[config_name].LOG_LEVEL)
    # 創建日志記錄器,設置日志的保存路徑和每個日志的大小和日志的總大小
    file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100,backupCount=100)
    # 創建日志記錄格式,日志等級,輸出日志的文件名 行數 日志信息
    formatter = logging.Formatter("%(levelname)s %(filename)s: %(lineno)d %(message)s")
    # 為日志記錄器設置記錄格式
    file_log_handler.setFormatter(formatter)
    # 為全局的日志工具對象(flaks app使用的)加載日志記錄器
    logging.getLogger().addHandler(file_log_handler)


def create_app(config_name):
    """

    :param config_name: info bug error
    :return:
    """
    # 創建app實例前先配置好日志文件
    setup_log(config_name)
    # 創建app實例對象
    app = Flask(__name__)
    # 實例對象從配置文件中加載配置
    app.config.from_object(config[config_name])   # 這里直接拿到的是類的名字,也就是引用
    return app

 

config/config.py

import logging


class Config(object):
    # 設置日志等級
    LOG_LEVEL = logging.DEBUG


class DevelopConfig(Config):
    """開發環境下的配置"""
    DEBUG = True


class ProductConfig(Config):
    """生成環境下的配置"""
    DEBUG = False
    LOG_LEVEL = logging.WARNING


class TestConfig(Config):
    """測試環境下的配置"""
    DEBUG = True
    TESTING = True


config = {
    "development": DevelopConfig,
    "production": ProductConfig,
    "testing": TestConfig,
}

 

logs/log文件

INFO _internal.py: 122  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
INFO _internal.py: 122  * Restarting with stat
WARNING _internal.py: 122  * Debugger is active!
INFO _internal.py: 122  * Debugger PIN: 340-059-688
DEBUG manage.py: 13 測試打印日志
WARNING manage.py: 14 測試打印日志
ERROR manage.py: 15 測試打印日志
INFO _internal.py: 122 127.0.0.1 - - [24/Nov/2019 15:10:29] "GET / HTTP/1.1" 200 -
INFO _internal.py: 122  * Detected change in '/Users/xxx/PycharmProjects/flask_project1/manage.py', reloading
INFO _internal.py: 122  * Restarting with stat
WARNING _internal.py: 122  * Debugger is active!
INFO _internal.py: 122  * Debugger PIN: 340-059-688
DEBUG manage.py: 22 zhang
INFO _internal.py: 122 127.0.0.1 - - [24/Nov/2019 15:12:01] "GET /hello/zhang HTTP/1.1" 200 -
INFO _internal.py: 122  * Detected change in '/Users/xxx/PycharmProjects/flask_project1/manage.py', reloading
INFO _internal.py: 122  * Restarting with stat
WARNING _internal.py: 122  * Debugger is active!
INFO _internal.py: 122  * Debugger PIN: 340-059-688

 

config.py中還可以進行好多的配置

例如:數據庫的配置,密碼的配置

具體的配置參看:https://www.cnblogs.com/alicelai1319/p/10289798.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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