Flask 控制日志格式

2021-08-10 17:43 更新

默認(rèn)情況下,錯(cuò)誤處理只會(huì)把消息字符串記錄到文件或郵件發(fā)送給你。一個(gè)日志記 錄應(yīng)存儲(chǔ)更多的信息,這使得配置你的日志記錄器包含那些信息很重要,如此你會(huì) 對(duì)錯(cuò)誤發(fā)生的原因,還有更重要的——錯(cuò)誤在哪發(fā)生,有更好的了解。

格式可以從一個(gè)格式化字符串實(shí)例化。注意回溯(tracebacks)會(huì)被自動(dòng)加入到日 志條目后,你不需要在日志格式的格式化字符串中這么做。

這里有一些配置實(shí)例:

郵件

from logging import Formatter
mail_handler.setFormatter(Formatter('''
Message type:       %(levelname)s
Location:           %(pathname)s:%(lineno)d
Module:             %(module)s
Function:           %(funcName)s
Time:               %(asctime)s

Message:

%(message)s
'''))

日志文件

from logging import Formatter
file_handler.setFormatter(Formatter(
    '%(asctime)s %(levelname)s: %(message)s '
    '[in %(pathname)s:%(lineno)d]'
))

復(fù)雜日志格式

這里給出一個(gè)用于格式化字符串的格式變量列表。注意這個(gè)列表并不完整,完整的列 表請(qǐng)翻閱 logging 包的官方文檔。

格式 描述
%(levelname)s 消息文本的記錄等級(jí) ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL').
%(pathname)s 發(fā)起日志記錄調(diào)用的源文件的完整路徑(如果可用)
%(filename)s 路徑中的文件名部分
%(module)s 模塊(文件名的名稱部分)
%(funcName)s 包含日志調(diào)用的函數(shù)名
%(lineno)d 日志記錄調(diào)用所在的源文件行的行號(hào)(如果可用)
%(asctime)s LogRecord 創(chuàng)建時(shí)的人類可讀的時(shí)間。默認(rèn)情況下,格 式為 "2003-07-08 16:49:45,896" (逗號(hào)后的數(shù)字 時(shí)間的毫秒部分)。這可以通過(guò)繼承 :class:~logging.Formatter,并 重載 formatTime() 改變。
%(message)s 記錄的消息,視為 msg % args

如果你想深度定制日志格式,你可以繼承 Formatter 。 Formatter 有三個(gè)需要關(guān)注的方法:

format():
處理實(shí)際上的格式。需要一個(gè) LogRecord 對(duì)象作為參數(shù),并
必須返回一個(gè)格式化字符串。
formatTime():
控制 asctime 格式。如果你需要不同的時(shí)間格式,可以重載這個(gè)函數(shù)。
formatException()
控制異常的格式。需要一個(gè) exc_info 元組作為參數(shù),并必須返 回一個(gè)字符串。默認(rèn)的通常足夠好,你不需要重載它。

更多信息請(qǐng)見其官方文檔。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)