最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flask實(shí)現(xiàn)定制日志并輸出到文件

 更新時(shí)間:2023年07月25日 11:28:28   作者:Jacky-008  
這篇文章主要為大家學(xué)習(xí)介紹了Flask如何實(shí)現(xiàn)定制日志并輸出到文件,文中的示例代碼簡(jiǎn)介易懂,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧

定制日志器

flask缺省日志器配置

flask自帶的日志系統(tǒng),缺省配置dictConfig(),但必須在Flask()應(yīng)用之前使用

# flask缺省配置
from logging.config import dictConfig
dictConfig({
    '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__)

自定義日志器

# 配置
def logger_setting(base_dir=None):
	# base_dir是日志文件存放的根目錄,這里為項(xiàng)目目錄
    if not base_dir:
        base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))
    format_dic, handler_dic, logger_dic = dict(), dict(), dict()
    # 定義日志格式
    format_dic['default'] = {'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s'}
    format_dic['simple'] = {'format': '{asctime}- {levelname} {message}'}
    format_dic['standard'] = {'format': '%(asctime)s [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}
    # 定義日志處理器
    handler_dic['wsgi'] = {'class': 'logging.StreamHandler', # 流輸出
                           'stream': 'ext://flask.logging.wsgi_errors_stream',
                           'formatter': 'default'}
    handler_dic['console'] = {'level': 'INFO',
                              #'class': 'logging.StreamHandler',
                              'class': 'logging.FileHandler', # 輸出到文件
                              'filename': os.path.join(base_dir, 'logs','console.log',
                              'formatter': 'simple'}
    handler_dic['error'] = {'level': 'ERROR',
                            'class': 'logging.handlers.RotatingFileHandler',
                            'filename': os.path.join(base_dir, 'logs', 'error.log'),  # 日志文件全路徑 = base_dir/logs/error.log
                            'maxBytes': 1024 * 1024 * 5,
                            'formatter': 'standard'}
    handler_dic['master'] = {'level': 'ERROR',
                             'class': 'logging.handlers.RotatingFileHandler',
                             'filename': os.path.join(base_dir, 'logs', 'master.log'),
                             'maxBytes': 1024 * 1024 * 5,
                             'formatter': 'standard'}
    # 定義日志器
    logger_dic['master'] = {'handlers': ['master'],
                            'level': 'INFO',
                            'propagate': True}
    config = {
        'version': 1,
        'formatters': format_dic,
        'handlers': handler_dic,
        # 'root': {'level': 'INFO', 'handlers': ['wsgi']},  #這個(gè)可以不用
        'loggers': logger_dic
    }
    return config

# flask使用自定義日志器配置, 這里使用是重新定義缺省日志器配置
dictConfig(logger_setting())
app = Flask(__name__, template_folder='templates', static_folder='static')
logger = logging.getLogger('master')
@app.get('/')
def login():
	try:
        print('測(cè)試日志器')
        raise ValueError('djjsdwewoeoopw')
    except Exception as e:
        logger.error(e)
        traceback.print_exc()
        abort(401)

if __name__ == '__main__':
   app.run()

同時(shí)在項(xiàng)目目錄下創(chuàng)建logs目錄如下圖

到此這篇關(guān)于Flask實(shí)現(xiàn)定制日志并輸出到文件的文章就介紹到這了,更多相關(guān)Flask定制日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python虛擬環(huán)境virtualenv的安裝與使用

    python虛擬環(huán)境virtualenv的安裝與使用

    virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個(gè)Python相互獨(dú)立,互不影響,它能夠:1. 在沒(méi)有權(quán)限的情況下安裝新套件 2. 不同應(yīng)用可以使用不同的套件版本 3. 套件升級(jí)不影響其他應(yīng)用
    2017-09-09
  • PyTorch中的padding(邊緣填充)操作方式

    PyTorch中的padding(邊緣填充)操作方式

    今天小編就為大家分享一篇PyTorch中的padding(邊緣填充)操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python實(shí)現(xiàn)豆瓣圖片下載的方法

    Python實(shí)現(xiàn)豆瓣圖片下載的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)豆瓣圖片下載的方法,涉及Python針對(duì)網(wǎng)頁(yè)操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python編程中Python與GIL互斥鎖關(guān)系作用分析

    Python編程中Python與GIL互斥鎖關(guān)系作用分析

    GIL互斥鎖用來(lái)保護(hù)Python世界里的對(duì)象,防止同一時(shí)刻多個(gè)線程執(zhí)行Python字節(jié)碼,確保線程安全,但也導(dǎo)致Python線程無(wú)法利用多核CPU優(yōu)勢(shì),本文來(lái)探討Python將來(lái)是否有可能去除GIL
    2021-09-09
  • Python 在字符串中加入變量的實(shí)例講解

    Python 在字符串中加入變量的實(shí)例講解

    下面小編就為大家分享一篇Python 在字符串中加入變量的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python面向?qū)ο竽Хǚ椒ê蛦卫K代碼實(shí)例

    Python面向?qū)ο竽Хǚ椒ê蛦卫K代碼實(shí)例

    這篇文章主要介紹了Python面向?qū)ο竽Хǚ椒ê蛦卫K代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python實(shí)現(xiàn)為PDF大文件批量去除水印

    Python實(shí)現(xiàn)為PDF大文件批量去除水印

    在閱讀過(guò)程中如果遇到一些帶有水印的資料是比較煩心的,而市面上去水印的功能有多要收費(fèi)且很不方便,那么,如何通過(guò)Python來(lái)對(duì)這類(lèi)圖片水印進(jìn)行去除呢,本文就來(lái)和大家分享一下實(shí)現(xiàn)方法吧
    2023-05-05
  • Python?sentence-transformers庫(kù)示例詳解

    Python?sentence-transformers庫(kù)示例詳解

    Sentence?Transformer是一個(gè)Python框架,用于句子、文本和圖像嵌入Embedding,它基于Transformer架構(gòu)的預(yù)訓(xùn)練模型,并在大量語(yǔ)義相似性數(shù)據(jù)上進(jìn)行了微調(diào),能夠捕捉句子之間的深層語(yǔ)義關(guān)系,本文給大家介紹Python?sentence-transformers庫(kù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-08-08
  • 從基礎(chǔ)操作到高級(jí)技巧詳解Python源代碼導(dǎo)出全攻略

    從基礎(chǔ)操作到高級(jí)技巧詳解Python源代碼導(dǎo)出全攻略

    在Python開(kāi)發(fā)中,導(dǎo)出源代碼是一個(gè)常見(jiàn)需求,本文將通過(guò)真實(shí)場(chǎng)景案例,用通俗易懂的方式講解Python源代碼導(dǎo)出的完整方案,希望對(duì)大家有所幫助
    2026-02-02
  • 關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法

    關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法

    今天小編就為大家分享一篇關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08

最新評(píng)論

龙井市| 新郑市| 蒙城县| 丘北县| 抚宁县| 山阴县| 积石山| 丁青县| 临潭县| 高陵县| 南木林县| 辽阳市| 顺平县| 贡山| 炉霍县| 伊川县| 和顺县| 井陉县| 遂平县| 平陆县| 博罗县| 育儿| 来凤县| 鞍山市| 绥江县| 北票市| 德阳市| 酉阳| 临江市| 盐亭县| 聂荣县| 苗栗县| 肥西县| 长垣县| 揭东县| 库车县| 海林市| 松溪县| 获嘉县| 洞口县| 民权县|