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

flask之日志的配置的更多相关文章

  1. Nginx插件之openresty反向代理和日志滚动配置案例

    Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...

  2. Flask app.config 的配置

    原理如下:   image.png 1.通过调用自定义config.py文件中config字典,可以得到一个类, 这个类里面定义的都是类变量,这些变量就是自定义的一些配置项. 如下config.py ...

  3. Xcode8中处理打印日志的配置

    Xcode8中处理打印日志的配置

  4. 关于log4net日志的配置流程

    最近又重新整理一下log4net日志的配置,现在记录一下流程和一些遇到的问题,以备后续使用,具体的配置参数等信息.此文无,见谅! 1. 下载log4net.dll文件(网上很多,随便找一个!) 2. ...

  5. C# 日志的配置流程

    1. 下载log4net.dll文件 http://download.csdn.net/detail/abc456456456456/7653857 2. 项目中引用此dll 3. appconfig ...

  6. Tomcat访问日志详细配置

    在server.xml里的<host>标签下加上 <Valve className="org.apache.catalina.valves.AccessLogValve&q ...

  7. IIS 7完全攻略之日志记录配置(摘自网络)

    IIS 7完全攻略之日志记录配置 作者:泉之源 [IT168 专稿]除了 Windows 提供的日志记录功能外,IIS 7.0 还可以提供其他日志记录功能.例如,可以选择日志文件格式并指定要记录的请求 ...

  8. 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

    我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方 对 ...

  9. java log4j基本配置及日志级别配置详解

    java log4j日志级别配置详解 1.1 前言 说出来真是丢脸,最近被公司派到客户公司面试外包开发岗位,本来准备了什么redis.rabbitMQ.SSM框架的相关面试题以及自己做过的一些项目回顾 ...

随机推荐

  1. ubuntu用mentohust连接ruijie

    32位  http://download.csdn.net/detail/yan456jie/8720395 64位 http://download.csdn.net/detail/yan456jie ...

  2. 安装mysql数据库要注意的

    只安装基本功能即可,以后要的话可以加 需要配置环境变量 最好不要将数据存放在c盘,默认在  C:\ProgramData\MySQL\MySQL Server 5.6  里面存放建的表和存放的数据

  3. db4o这个对象数据库有很多优点,但为什么不是很火? 大家有没有用过db4o的?

    没有主键的概念(因为对象的内存地址,或者引用就能标志一个对象了).因而外界想指向一个具体的对象就比较困难(比如本页的url里的1079505). 激活/保存层次的问题.获取一个对象,它的字段引用了其它 ...

  4. 四种方法 恢复损坏的Excel文档

    四种方法 恢复损坏的Excel文档 打开一个以前编辑好的Excel工作簿,却发现内容混乱,无法继续进行编辑,而且还不能够进行打印.这是很多朋友在处理Excel文件时都可能会遇到的一个问题,面对这种情况 ...

  5. debian下安装mysql 5.1.34

    #cd /usr/local/src # tar xvzf mysql-5.1.34.tar.gz # cd mysql-5.5.1.34 配置和编译 #chmod +x configure # ./ ...

  6. 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置

    USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...

  7. ubuntu使用iptables 持久化

    iptables 持久化 安装持久化工具apt-get install iptables-persistent Ubuntu 16.04 调用语法netfilter-persistent savene ...

  8. vscode打开SpringBoot项目

    1.使用vscode打开java项目所在文件夹 2.按ctl+~ 打开命令面板 mvn -Dmaven.test.skip=true spring-boot:run

  9. 索引之----mysql联合索引

    重要概念: 1.对于mysql来说,一条sql中,一个表无论其蕴含的索引有多少,但是有且只用一条. 2.对于多列索引来说(a,b,c)其相当于3个索引(a),(a,b),(a,b,c)3个索引,又由于 ...

  10. java8--- Predicate 意义 代码

    //为了去除 DiyInterface 这个函数式接口,可以用通用函数式接口 Predicate 替代如下: https://blog.csdn.net/u011848397/article/deta ...