当前位置: 首页 > news >正文

龙采做网站要多少钱搜索引擎优化英文简称

龙采做网站要多少钱,搜索引擎优化英文简称,网络规划设计师教程第2版 下载,自己做网站能赚钱logging日志的使用 一、了解flask日志1.1、Loggers记录器1.2、Handlers 处理器1.3、Formatters 格式化器 二、使用日志2.1、官网上的一个简单的示例2.2、基本配置2.3、具体使用示例2.4、运行 三、写在最后 一、了解flask日志 日志是一种非常重要的工具,可以帮助开发…

logging日志的使用

      • 一、了解flask日志
        • 1.1、Loggers记录器
        • 1.2、Handlers 处理器
        • 1.3、Formatters 格式化器
      • 二、使用日志
        • 2.1、官网上的一个简单的示例
        • 2.2、基本配置
        • 2.3、具体使用示例
        • 2.4、运行
      • 三、写在最后

一、了解flask日志

日志是一种非常重要的工具,可以帮助开发人员在应用程序中进行故障排除和错误调试。Flask应用程序的记录器可以记录应用程序的运行状态和错误,从而提供有价值的信息来分析和解决问题。

Flask采用标准 Python logging . 有关Flask应用程序的消息记录在 app.logger中,
Flask日志基本配置文档 ,在文档中了解到,在 Flask 中,我们可以使用 app.logger 对象来进行日志记录。Flask采用标准 Python logging . 有关Flask应用程序的消息记录在 app.logger

1.1、Loggers记录器

Loggers 即记录器,是日志系统的入口,日志等级描述了 logger 记录的信息的严重程度:

  • DEBUG:低的、基于调试目的的系统信息
  • INFO:一般系统消息
  • WARNING:警告信息
  • ERROR:发生了报错的信息
  • CRITICAL:发生了严重的问题的信息
    当一条消息被发送到 logger,消息的等级会和 logger 的日志等级做一个比较,只有当消息的等级大于或等于 logger 的记录等级时,消息才会被当前 logger 进行更多的处理
1.2、Handlers 处理器

Handler即处理器,它的主要功能是决定如何处理logger中每一条消息,比如把消息输出到屏幕、文件或者Email中。和 logger 一样,handler也有级别的概念。
如果一条日志记录的级别不匹配或者低于handler的日志级别,则会被handler忽略。
一个logger可以有多个handler,每一个handler可以有不同的日志级别。
这样就可以根据消息的重要性不同,来提供不同类型的输出。

例如,你可以添加一个handler把ERROR和CRITICAL消息发到你的Email,再添加另一个 handler把所有的消息(包括ERROR和CRITICAL消息)保存到文件里。

1.3、Formatters 格式化器

Formatter即格式化器,主要功能是确定最终输出的形式和内容。

二、使用日志

2.1、官网上的一个简单的示例
@app.route('/login', methods=['POST'])
def login():user = get_user(request.form['username'])if user.check_password(request.form['password']):login_user(user)app.logger.info('%s logged in successfully', user.username)return redirect(url_for('index'))else:app.logger.info('%s failed to log in', user.username)abort(401)

如果不配置日志记录,Python的默认日志级别通常为“warning”。低于配置级别的内容将不可见

2.2、基本配置

当你想为项目配置日志记录时,应该在程序启动时尽快进行。如果在配置日志之前访问,那么 app.logger 就会成为缺省记录器。如果可能,请在创建应用程序对象之前配置日志记录。

此示例使用 dictConfig() 来创建一个类似于 Flask 缺省配置的日志记录配置:

from logging.config import dictConfigdictConfig({'version': 1,'formatters': {'default': {'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',}},'handlers': {'wsgi': {'class': 'logging.StreamHandler','stream': 'ext://flask.logging.wsgi_errors_stream','formatter': 'default'}},'root': {'level': 'INFO','handlers': ['wsgi']}
})app = Flask(__name__)

如果没有自己配置日志,Flask 会自动添加一个 StreamHandler app.logger 。 在请求过程中,它会写到由 WSGI 服务器指定的,保存在 environ['wsgi.errors'] 变量中的日志流(通常是 sys.stderr)中。在请求之外,则会记录到 sys.stderr

2.3、具体使用示例
from flask import Flask, request
from logging.config import dictConfigdictConfig({"version": 1,"disable_existing_loggers": False,  # 不覆盖默认配置"formatters": {  # 日志输出样式"default": {"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"}},"handlers": {"console": {"class": "logging.StreamHandler",  # 控制台输出"level": "DEBUG","formatter": "default",},"log_file": {"class": "logging.handlers.RotatingFileHandler","level": "INFO","formatter": "default",   # 日志输出样式对应formatters"filename": "./logs/flask.log",  # 指定log文件目录"maxBytes": 20*1024*1024,   # 文件最大20M"backupCount": 10,          # 最多10个文件"encoding": "utf8",         # 文件编码},},"root": {"level": "DEBUG",  # # handler中的level会覆盖掉这里的level"handlers": ["console", "log_file"],},}
)app = Flask(__name__)@app.route('/login', methods=['POST'])
def login():app.logger.debug(f'login request payload: {request.json}')user = request.json.get('username')if user == 'test':app.logger.info(f'{user} logged in successfully')return {'msg': 'success!', 'access_token': '********token******'}else:app.logger.info('%s failed to log in', user.username)return {'msg': 'username or password invalid', 'access_token': ''}if __name__ == '__main__':app.run()

可以再精简一下,把日志的处理单独拉出来:

import osfrom flask import Flaskfrom project.extension import db, cors
from project.config import config  # 导入存储配置的字典from project.blog import blog_base_blueprint
import logging
from logging.handlers import RotatingFileHandlerdef create_app(config_name=None):if config_name is None:config_name = os.getenv('FLASK_ENV', 'development')  # 从环境变量中获取FLASK_ENV,并设置默认值app = Flask('project')# setup config,导入配置,根据配置环境实例化app.config.from_object(config[config_name])# 注册扩展register_extension(app)# 注册蓝图register_blueprint(app)#注册日志处理器register_log(app)return app# 注册flask拓展
def register_extension(app: Flask):db.init_app(app)db.app = appcors.init_app(app, origins="*")# 注册蓝图
def register_blueprint(app: Flask):app.register_blueprint(blog_base_blueprint)def register_log(app: Flask):app.logger.setLevel(logging.INFO)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')file_handler = RotatingFileHandler(app.config['BASE_DIR'] + '/storage/logs/blogin.log', maxBytes=10 * 1024 * 1024, backupCount=10)file_handler.setFormatter(formatter)file_handler.setLevel(logging.INFO)app.logger.addHandler(file_handler)

然后再每个模块需要的地方,再单独使用日志,比如我的蓝图中使用:
在这里插入图片描述

2.4、运行

项目运行以后,访问我/api/posts,然后在文件storage/logs/blogin.log中,就能看到日志喽。
这里一定要保证有这个目录,并且有写入文件的权限,否则会报错

在这里插入图片描述

三、写在最后

宣传一波:大家若是有人想北京租房可以联系我,主要是物资学院、通州北关、北苑、草房的房子。(注:我不是中介哟,我也不打算转行做中介,是我靠谱的朋友在做)
在这里插入图片描述

http://www.tj-hxxt.cn/news/25661.html

相关文章:

  • 虚拟主机网站建设过程无代码系统搭建平台
  • 新疆生产建设兵团民政局网站营销软文是什么
  • 网站建设建设营销型网站建设应该考虑哪些因素
  • 官方网站开发需要几个技术人员电子商务网络营销
  • 营销型网站建设专家网络推广员的日常工作
  • 个人网站的版权怎么写爱站网站长seo综合查询工具
  • 做网站怎么建站点游戏搬砖工作室加盟平台
  • 跨境电商个人开店的平台杭州做seo的公司
  • 沈阳网站推广有什么技巧抖音seo推广外包公司好做吗
  • 成都高新区规划国土建设局网站百度手机助手下载2021新版
  • 北京网站建设好不好天长沙seo优化报价
  • 国外外贸平台哪个网站最好企业文化
  • 房产资讯的网站怎么做真正免费的网站建站平台运营
  • 微网站开发平台搜索引擎推广方案案例
  • 如何做网站的充值功能山西百度推广开户
  • 攻击jsp网站活动宣传推广方案怎么写
  • 网站建设完毕后怎么加后台怎么做网络广告推广
  • 做网站需要什么基础天机seo
  • wordpress 翻页代码什么是seo关键词
  • 做设计的需要网站下载素材吗论坛推广工具
  • html设计素材网站百度公司
  • asp.net 政府网站英文seo是什么意思
  • rp做网站网络推广公司名字大全
  • 国外扁平化设计网站seo全国最好的公司
  • 传媒在线网站模板长沙官网seo推广
  • wordpress 无法登录界面移动网站推广如何优化
  • 免费建网站讨论武汉网站关键词推广
  • 做调味品批发上哪个网站好百度指数资讯指数
  • 做视频网站怎么赚钱百度推广有哪些推广方式
  • 电子商务网站建设与管理课后心得seo课程培训学校