中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站 最好的開源cms哈爾濱seo服務(wù)

做網(wǎng)站 最好的開源cms,哈爾濱seo服務(wù),網(wǎng)站尺寸,旅游網(wǎng)站制作素材logging日志的使用 一、了解flask日志1.1、Loggers記錄器1.2、Handlers 處理器1.3、Formatters 格式化器 二、使用日志2.1、官網(wǎng)上的一個(gè)簡單的示例2.2、基本配置2.3、具體使用示例2.4、運(yùn)行 三、寫在最后 一、了解flask日志 日志是一種非常重要的工具,可以幫助開發(fā)…

logging日志的使用

      • 一、了解flask日志
        • 1.1、Loggers記錄器
        • 1.2、Handlers 處理器
        • 1.3、Formatters 格式化器
      • 二、使用日志
        • 2.1、官網(wǎng)上的一個(gè)簡單的示例
        • 2.2、基本配置
        • 2.3、具體使用示例
        • 2.4、運(yùn)行
      • 三、寫在最后

一、了解flask日志

日志是一種非常重要的工具,可以幫助開發(fā)人員在應(yīng)用程序中進(jìn)行故障排除和錯(cuò)誤調(diào)試。Flask應(yīng)用程序的記錄器可以記錄應(yīng)用程序的運(yùn)行狀態(tài)和錯(cuò)誤,從而提供有價(jià)值的信息來分析和解決問題。

Flask采用標(biāo)準(zhǔn) Python logging . 有關(guān)Flask應(yīng)用程序的消息記錄在 app.logger中,
Flask日志基本配置文檔 ,在文檔中了解到,在 Flask 中,我們可以使用 app.logger 對(duì)象來進(jìn)行日志記錄。Flask采用標(biāo)準(zhǔn) Python logging . 有關(guān)Flask應(yīng)用程序的消息記錄在 app.logger

1.1、Loggers記錄器

Loggers 即記錄器,是日志系統(tǒng)的入口,日志等級(jí)描述了 logger 記錄的信息的嚴(yán)重程度:

  • DEBUG:低的、基于調(diào)試目的的系統(tǒng)信息
  • INFO:一般系統(tǒng)消息
  • WARNING:警告信息
  • ERROR:發(fā)生了報(bào)錯(cuò)的信息
  • CRITICAL:發(fā)生了嚴(yán)重的問題的信息
    當(dāng)一條消息被發(fā)送到 logger,消息的等級(jí)會(huì)和 logger 的日志等級(jí)做一個(gè)比較,只有當(dāng)消息的等級(jí)大于或等于 logger 的記錄等級(jí)時(shí),消息才會(huì)被當(dāng)前 logger 進(jìn)行更多的處理
1.2、Handlers 處理器

Handler即處理器,它的主要功能是決定如何處理logger中每一條消息,比如把消息輸出到屏幕、文件或者Email中。和 logger 一樣,handler也有級(jí)別的概念。
如果一條日志記錄的級(jí)別不匹配或者低于handler的日志級(jí)別,則會(huì)被handler忽略。
一個(gè)logger可以有多個(gè)handler,每一個(gè)handler可以有不同的日志級(jí)別。
這樣就可以根據(jù)消息的重要性不同,來提供不同類型的輸出。

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

1.3、Formatters 格式化器

Formatter即格式化器,主要功能是確定最終輸出的形式和內(nèi)容。

二、使用日志

2.1、官網(wǎng)上的一個(gè)簡單的示例
@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的默認(rèn)日志級(jí)別通常為“warning”。低于配置級(jí)別的內(nèi)容將不可見

2.2、基本配置

當(dāng)你想為項(xiàng)目配置日志記錄時(shí),應(yīng)該在程序啟動(dòng)時(shí)盡快進(jìn)行。如果在配置日志之前訪問,那么 app.logger 就會(huì)成為缺省記錄器。如果可能,請(qǐng)?jiān)趧?chuàng)建應(yīng)用程序?qū)ο笾芭渲萌罩居涗洝?/p>

此示例使用 dictConfig() 來創(chuàng)建一個(gè)類似于 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 會(huì)自動(dòng)添加一個(gè) StreamHandler app.logger 。 在請(qǐng)求過程中,它會(huì)寫到由 WSGI 服務(wù)器指定的,保存在 environ['wsgi.errors'] 變量中的日志流(通常是 sys.stderr)中。在請(qǐng)求之外,則會(huì)記錄到 sys.stderr

2.3、具體使用示例
from flask import Flask, request
from logging.config import dictConfigdictConfig({"version": 1,"disable_existing_loggers": False,  # 不覆蓋默認(rèn)配置"formatters": {  # 日志輸出樣式"default": {"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"}},"handlers": {"console": {"class": "logging.StreamHandler",  # 控制臺(tái)輸出"level": "DEBUG","formatter": "default",},"log_file": {"class": "logging.handlers.RotatingFileHandler","level": "INFO","formatter": "default",   # 日志輸出樣式對(duì)應(yīng)formatters"filename": "./logs/flask.log",  # 指定log文件目錄"maxBytes": 20*1024*1024,   # 文件最大20M"backupCount": 10,          # 最多10個(gè)文件"encoding": "utf8",         # 文件編碼},},"root": {"level": "DEBUG",  # # handler中的level會(huì)覆蓋掉這里的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()

可以再精簡一下,把日志的處理單獨(dú)拉出來:

import osfrom flask import Flaskfrom project.extension import db, cors
from project.config import config  # 導(dǎo)入存儲(chǔ)配置的字典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')  # 從環(huán)境變量中獲取FLASK_ENV,并設(shè)置默認(rèn)值app = Flask('project')# setup config,導(dǎo)入配置,根據(jù)配置環(huán)境實(shí)例化app.config.from_object(config[config_name])# 注冊(cè)擴(kuò)展register_extension(app)# 注冊(cè)藍(lán)圖register_blueprint(app)#注冊(cè)日志處理器register_log(app)return app# 注冊(cè)flask拓展
def register_extension(app: Flask):db.init_app(app)db.app = appcors.init_app(app, origins="*")# 注冊(cè)藍(lán)圖
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)

然后再每個(gè)模塊需要的地方,再單獨(dú)使用日志,比如我的藍(lán)圖中使用:
在這里插入圖片描述

2.4、運(yùn)行

項(xiàng)目運(yùn)行以后,訪問我/api/posts,然后在文件storage/logs/blogin.log中,就能看到日志嘍。
這里一定要保證有這個(gè)目錄,并且有寫入文件的權(quán)限,否則會(huì)報(bào)錯(cuò)

在這里插入圖片描述

三、寫在最后

宣傳一波:大家若是有人想北京租房可以聯(lián)系我,主要是物資學(xué)院、通州北關(guān)、北苑、草房的房子。(注:我不是中介喲,我也不打算轉(zhuǎn)行做中介,是我靠譜的朋友在做)
在這里插入圖片描述

http://m.risenshineclean.com/news/48308.html

相關(guān)文章:

  • 網(wǎng)站管理助手 ftp2021年網(wǎng)絡(luò)十大關(guān)鍵詞
  • wordpress sparklingseo關(guān)鍵詞優(yōu)化怎么收費(fèi)
  • 關(guān)于政府網(wǎng)站建設(shè)的實(shí)施意見個(gè)人網(wǎng)頁免費(fèi)域名注冊(cè)入口
  • 企業(yè)信息填報(bào)登錄百度關(guān)鍵字優(yōu)化價(jià)格
  • 公司網(wǎng)站建設(shè)費(fèi)用包括知名網(wǎng)絡(luò)軟文推廣平臺(tái)
  • 做電商網(wǎng)站的感想免費(fèi)b站推廣網(wǎng)站在線
  • 制作網(wǎng)站上海網(wǎng)絡(luò)營銷公司哪家好
  • python 網(wǎng)站開發(fā)實(shí)戰(zhàn)百度下載app下載
  • 免費(fèi)的黃金軟件seo優(yōu)化價(jià)格
  • 假冒網(wǎng)站能通過備案登記嗎手機(jī)怎么創(chuàng)建自己的網(wǎng)站平臺(tái)
  • 網(wǎng)站的外鏈情況關(guān)鍵詞優(yōu)化搜索排名
  • 網(wǎng)站底部信息怎么注冊(cè)百度賬號(hào)
  • 如何讓網(wǎng)站不被收錄電商代運(yùn)營收費(fèi)標(biāo)準(zhǔn)
  • 如何在國稅網(wǎng)站做票種核定網(wǎng)站開發(fā)從入門到實(shí)戰(zhàn)
  • 新手學(xué)做網(wǎng)站要花錢么大數(shù)據(jù)營銷推廣精準(zhǔn)粉
  • 成都企業(yè)網(wǎng)站建設(shè)方案天津網(wǎng)絡(luò)推廣seo
  • 網(wǎng)站開發(fā)用什么寫seo課程培訓(xùn)
  • html中文網(wǎng)aso優(yōu)化什么意思
  • 做網(wǎng)站需要icp經(jīng)營許可證網(wǎng)絡(luò)營銷師培訓(xùn)費(fèi)用是多少
  • 石家莊做網(wǎng)站科技公司南昌做seo的公司有哪些
  • 如何再騰訊云服務(wù)器做網(wǎng)站百度關(guān)鍵詞排名怎么靠前
  • 最專業(yè)的外貿(mào)網(wǎng)站建設(shè)廣州關(guān)鍵詞seo
  • 一般app開發(fā)費(fèi)用seo外包公司費(fèi)用
  • betheme做網(wǎng)站怎么樣網(wǎng)店網(wǎng)絡(luò)營銷與推廣策劃書
  • 網(wǎng)站布局結(jié)構(gòu)如何引流客源最快的方法
  • 網(wǎng)站版面布局結(jié)構(gòu)武漢百度百科
  • 跳轉(zhuǎn)網(wǎng)站正在建設(shè)中seo網(wǎng)絡(luò)推廣經(jīng)理招聘
  • 自己做網(wǎng)站代理產(chǎn)品5188關(guān)鍵詞平臺(tái)
  • wordpress怎樣顯示子類目長春網(wǎng)站seo
  • 希爾頓酒店網(wǎng)站建設(shè)的優(yōu)點(diǎn)網(wǎng)站推廣軟件哪個(gè)最好