Flask實(shí)現(xiàn)定制日志并輸出到文件
定制日志器
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實(shí)現(xiàn)某考試系統(tǒng)生成word試卷
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)某考試系統(tǒng)生成word試卷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
Python 給某個(gè)文件名添加時(shí)間戳的方法
今天小編就為大家分享一篇Python 給某個(gè)文件名添加時(shí)間戳的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式
這篇文章主要介紹了Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python/MySQL實(shí)現(xiàn)Excel文件自動(dòng)處理數(shù)據(jù)功能
在沒有服務(wù)器存儲(chǔ)數(shù)據(jù),只有excel文件的情況下,如何利用SQL和python實(shí)現(xiàn)數(shù)據(jù)分析和數(shù)據(jù)自動(dòng)處理的功能?本文就來和大家聊聊解決辦法2023-02-02
python批量修改xml屬性的實(shí)現(xiàn)方式
這篇文章主要介紹了python批量修改xml屬性的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
編寫同時(shí)兼容Python2.x與Python3.x版本的代碼的幾個(gè)示例
這篇文章主要介紹了編寫同時(shí)兼容Python2.x與Python3.x版本的代碼的幾個(gè)示例,在Python2.7.x的更新中由于采用了某些Python3中的代碼編寫特性、使得在有些原本不同之處編寫兼容性代碼成為可能,需要的朋友可以參考下2015-03-03
python實(shí)現(xiàn)堆排序的實(shí)例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python實(shí)現(xiàn)堆排序的實(shí)例講解內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02

