Flask--(項目准備)--添加日志


日志:記錄程序運行的狀態,在manage.py同級目錄下創建logs文件夾

定義日志文件:

import logging
from logging.handlers import RotatingFileHandler

from flask import Flask
# 可以用來指定 session 保存的位置
from flask.ext.session import Session
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.wtf import CSRFProtect
from redis import StrictRedis

from config import config

# 初始化數據庫
#  在Flask很多擴展里面都可以先初始化擴展的對象,然后再去調用 init_app 方法去初始化
db = SQLAlchemy()

# https://www.cnblogs.com/xieqiankun/p/type_hints_in_python3.html
redis_store = None  # type: StrictRedis
# redis_store: StrictRedis = None


def setup_log(config_name):
    # 設置日志的記錄等級
    logging.basicConfig(level=config[config_name].LOG_LEVEL)  # 調試debug級
    # 創建日志記錄器,指明日志保存的路徑、每個日志文件的最大大小、保存的日志文件個數上限
    file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)
    # 創建日志記錄的格式 日志等級 輸入日志信息的文件名 行數 日志信息
    formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
    # 為剛創建的日志記錄器設置日志記錄格式
    file_log_handler.setFormatter(formatter)
    # 為全局的日志工具對象(flask app使用的)添加日志記錄器
    logging.getLogger().addHandler(file_log_handler)


def create_app(config_name):
    # 配置日志,並且傳入配置名字,以便能獲取到指定配置所對應的日志等級
    setup_log(config_name)
    # 創建Flask對象
    app = Flask(__name__)
    # 加載配置
    app.config.from_object(config[config_name])
    # 通過app初始化
    db.init_app(app)
    # 初始化 redis 存儲對象
    global redis_store
    redis_store = StrictRedis(host=config[config_name].REDIS_HOST, port=config[config_name].REDIS_PORT)
    # 開啟當前項目 CSRF 保護,只做服務器驗證功能
    CSRFProtect(app)
    # 設置session保存指定位置
    Session(app)

    # 注冊藍圖
    from info.modules.index import index_blu
    app.register_blueprint(index_blu)

    return app

 

配置日志:

import logging
from redis import StrictRedis


class Config(object):
    """項目的配置"""

    SECRET_KEY = "iECgbYWReMNxkRprrzMo5KAQYnb2UeZ3bwvReTSt+VSESW0OB8zbglT+6rEcDW9X"

    # 為數據庫添加配置
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/information27"
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # Redis的配置
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379

    # Session保存配置
    SESSION_TYPE = "redis"
    # 開啟session簽名
    SESSION_USE_SIGNER = True
    # 指定 Session 保存的 redis
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    # 設置需要過期
    SESSION_PERMANENT = False
    # 設置過期時間
    PERMANENT_SESSION_LIFETIME = 86400 * 2

    # 設置日志等級
    LOG_LEVEL = logging.DEBUG


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


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


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


config = {
    "development": DevelopmentConfig,
    "production": ProductionConfig,
    "testing": TestingConfig
}

 

測試打印日志:

import logging
import redis
from  flask import Flask

# Flask參數,可以配置靜態文件路由,及文件夾
from flask import session
from flask.ext.migrate import Migrate, MigrateCommand
from flask.ext.script import Manager


from config import Config
from info import db, create_app

app = create_app('dev')
manager = Manager(app)
Migrate(app,db)
manager.add_command('db',MigrateCommand)


@app.route("/")
def index():
    # session['name']= 'Alice'
    logging.debug("測試打印日志")
    logging.warning("warning")
    logging.error("error")
    logging.fatal("fatal")
return "Welcome to Alice' PKM!" if __name__ == "__main__": manager.run()

 


免責聲明!

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



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