程式啟動日誌需要儲存到檔案中方便定位問題,flask的日誌記錄需要用到python標準庫logging的支援。
**示例:
# -*- coding: utf-8 -*-
from flask import flask
import logging
def root():
return 'hello'
if __name__ == '__main__':
handler = logging.filehandler('flask.log', encoding='utf-8')
handler.setlevel(logging.debug) # 設定日誌記錄最低級別為debug,低於debug級別的日誌記錄會被忽略,不設定setlevel()則預設為notset級別。
logging_format = logging.formatter(
'%(asctime)s - %(levelname)s - %(filename)s - %(funcname)s - %(lineno)s - %(message)s')
handler.setformatter(logging_format)
日誌檔案:flask.log
2019-11-08 23:18:51,769 - info - manager.py - root - 10 - info log示例如下,產生log1.log和log2.log兩個日誌檔案。2019-11-08 23:18:51,770 - warning - manager.py - root - 11 - warning log
同理,可以靈活地將不同模組中的日誌加以區分,輸出到不同檔案中。
from __future__ import absolute_import
import logging
def setup_logger(logger_name, log_file, level=logging.info):
l = logging.getlogger(logger_name)
formatter = logging.formatter('%(asctime)s : %(message)s')
filehandler = logging.filehandler(log_file, mode='w')
filehandler.setformatter(formatter)
streamhandler = logging.streamhandler()
streamhandler.setformatter(formatter)
l.setlevel(level)
l.addhandler(filehandler)
l.addhandler(streamhandler)
def main():
setup_logger('log1', r'log1.log')
setup_logger('log2', r'log2.log')
log1 = logging.getlogger('log1')
log2 = logging.getlogger('log2')
log1.info('info for log 1!')
log2.info('info for log 2!')
log1.error('oh, no! something went wrong!')
if '__main__' == __name__:
main()
遞迴練習 shutil模組 logging模組
os模組 檢視乙個資料夾下的所有檔案,這個資料夾下面還有資料夾,不能用walk import os defshow file path name lst os.listdir path for name in name lst abs path os.path.join path,name if o...
flask專案中使用logging記錄服務日誌
記錄日誌,在任何專案中,都是很重要的。在flask專案中,即有flask提供的logger可以用來記錄log,也可以通過直接使用python的logging模組自定義logger來記錄。其中,日誌資訊包含了幾個等級,如下,本次測試專案中使用了兩個等級的日誌資訊 級別說明 debug 除錯模式,列印最...
Flask 分開Models解決迴圈引用
在之前我們測試中,所有語句都在同乙個檔案中,但隨著專案越來越大,管理起來有所不便,所以將models分離.基本的檔案結構如下 from flask import flask from flask sqlalchemy import sqlalchemy from models import arti...