前面我们创建好了app工厂,但是db的问题还没有解除,我们回到manage
把app删除,解开注释,发现db报红。因为db在__init__.py的函数里面找不到。
我们在上面写
db=SQLAlchemy(app)
把函数里面的注释掉。
这里我们点进源码看到他给了mysql一个默认的值,所以我们在函数里面写。
db.init_app(app)
直接把app扔进去就行
日志集成
集成代码放在info里面的__init__.py里面
# 设置日志的记录等级
logging.basicConfig(level=logging.DEBUG) # 调试debug级
# 创建日志记录器,指明日志保存的路径(前面的logs为文件的名字,需要我们手动创建,后面则会自动创建)、每个日志文件的最大大小、保存的日志文件个数上限。
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)
这时我们发现有很多报红,我们需要导包,鼠标移动到报红处,alt+回车。
import logging from config import configs
分别导入这几个包。然后我们运行发现会报错,那是因为我们没有创建l放日志的文件夹。所以我们在项目底下创建一个叫logs的文件,创建好后再运行。发现还会报错,我们只需要把logs文件前一个点去掉就行,有的不用也可以
运行成功后我们发现logs,里面出现一个名为log的文本。
但是不同的开发级别有不同的日志,这个问题和格式工厂创建app是差不多的效果,所以我们仿照格式工厂来创建不同日志等级的一个编写
我们建立一个函数,把日志弄进去
def setup_log():
现在这是一个函数,我们在创建app之前调用。
我们在创建app的函数里写
setup_log()
因为是在同一个文件夹里面,而且steup_log在前面,所以可以调用。现在我们大致猜到我们的日志函数也需要接收一个参数,我们就写level。
def setup_log(level):
而这个也写
它从函数里拿到什么就调取什么要的等级。
而我们刚刚写的app函数里面也传进一个参数,我们来到config,导入
import logging
下面的开发环境,把pass给删了,写
LEVEL_LOG =logging.DEBUG
生产环境也添加,
LEVEL_LOG = logging.ERROR
然后回到__init__.py里面写
setup_log(configs[env].LEVEL_LOG)
然后运行就成功了。
以下我理解,
我们模拟app工厂的方式,我们在里面分别调试好日志等级,在和app一起出来,然后在__init.py里面我们在app里面调用,传到config里面,config里面有个函数__init__.py 里面互通,然后也就拿到了日志等级大致就这样。