Flask 控制日志格式

2021-08-10 17:43 更新

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

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

這里有一些配置實(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ù)雜日志格式

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

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

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

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

更多信息請見其官方文檔。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號