5,db的解决方法,日志集成

前面我们创建好了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 里面互通,然后也就拿到了日志等级大致就这样。

原文地址:https://www.cnblogs.com/manjian/p/13765107.html