Flask debug為False時(shí)日志級(jí)別不生效解決辦法

2022年10月27日16:03:18 發(fā)表評(píng)論 2,712 ℃

本地開發(fā)時(shí)我們一般會(huì)設(shè)置debug=True,生產(chǎn)環(huán)境就會(huì)關(guān)閉debug,但是最近發(fā)現(xiàn)有個(gè)Flask項(xiàng)目在生產(chǎn)環(huán)境,沒有輸出自定義的INFO日志。

一開始以為有什么bug,經(jīng)過反復(fù)測試,最終找到原因是因?yàn)閐ebug關(guān)閉導(dǎo)致只輸出WARN級(jí)別以上的日志。

代碼里面日志級(jí)別設(shè)置方式如下:

from logging.handlers import RotatingFileHandler
import logging
# 創(chuàng)建文件處理器
fileHandler = RotatingFileHandler(
    filename='amd5.cn',
    maxBytes=10000000,
    backupCount=5
)
# 給處理器設(shè)置輸出格式
formatter = logging.Formatter(
    '%(asctime)s %(levelname)s %(process)d [%(threadName)s] - %(filename)s:%(module)s : %(message)s')
fileHandler.setFormatter(formatter)
# 設(shè)置日志級(jí)別為INFO
fileHandler.setLevel(logging.INFO)

測試代碼如下:

@bp.route('/test')
def AtangBlogTest():
    log.debug("我是debug日志")
    log.info('我是info日志')
    log.warning('我是warning日志')
    log.error('我是error日志')
    print(f"日志級(jí)別: {log.level}")
    return {"code": 200, "msg": "阿湯博客:http://www.zhongjima.net"}

當(dāng)我把debug設(shè)置為True時(shí),輸出結(jié)果如下:

Flask debug為False時(shí)日志級(jí)別不生效解決辦法

Flask debug為False時(shí)日志級(jí)別不生效解決辦法

當(dāng)我把debug設(shè)置為False時(shí),輸出結(jié)果如下:

Flask debug為False時(shí)日志級(jí)別不生效解決辦法

日志級(jí)別對(duì)照:

CRITICAL = 50

FATAL = CRITICAL

ERROR = 40

WARNING = 30

WARN = WARNING

INFO = 20

DEBUG = 10

NOTSET = 0

可以看見info和debug日志沒有輸出了,日志級(jí)別也發(fā)生了變化,但是我并沒有修改日志級(jí)別。

有人給出的解決方案是通過logging.basicConfig(level=logging.INFO)設(shè)置日志級(jí)別,設(shè)置以后發(fā)現(xiàn)重復(fù)輸出了:

Flask debug為False時(shí)日志級(jí)別不生效解決辦法

最終找到了解決方法就是通過app.logger.setLevel(logging.INFO)日志級(jí)別以后就正常了。

Flask debug為False時(shí)日志級(jí)別不生效解決辦法

至于是什么原因?qū)е轮澳莻€(gè)日志級(jí)別設(shè)置不生效,只能等空了慢慢研究了。

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: