• 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()
  • 相关阅读:
    HTML笔记
    Android自定义View 自定义组合控件
    CSS 笔记
    HTML 4.01 快速参考
    MSP430单片机之中断服务
    MSP430单片机之RTC实时时钟
    Centos7.4内核符号地址查找函数的BUG
    珍惜世上的五个人
    实习
    毕业后的五年拉开大家差距的原因在哪里
  • 原文地址:https://www.cnblogs.com/alicelai1319/p/10289798.html
Copyright © 2020-2023  润新知