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']}, #這個可以不用 '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('測試日志器') raise ValueError('djjsdwewoeoopw') except Exception as e: logger.error(e) traceback.print_exc() abort(401) if __name__ == '__main__': app.run()
同時在項(xiàng)目目錄下創(chuàng)建logs目錄如下圖
到此這篇關(guān)于Flask實(shí)現(xiàn)定制日志并輸出到文件的文章就介紹到這了,更多相關(guān)Flask定制日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)某考試系統(tǒng)生成word試卷
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)某考試系統(tǒng)生成word試卷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05Python/MySQL實(shí)現(xiàn)Excel文件自動處理數(shù)據(jù)功能
在沒有服務(wù)器存儲數(shù)據(jù),只有excel文件的情況下,如何利用SQL和python實(shí)現(xiàn)數(shù)據(jù)分析和數(shù)據(jù)自動處理的功能?本文就來和大家聊聊解決辦法2023-02-02python批量修改xml屬性的實(shí)現(xiàn)方式
這篇文章主要介紹了python批量修改xml屬性的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03編寫同時兼容Python2.x與Python3.x版本的代碼的幾個示例
這篇文章主要介紹了編寫同時兼容Python2.x與Python3.x版本的代碼的幾個示例,在Python2.7.x的更新中由于采用了某些Python3中的代碼編寫特性、使得在有些原本不同之處編寫兼容性代碼成為可能,需要的朋友可以參考下2015-03-03python實(shí)現(xiàn)堆排序的實(shí)例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python實(shí)現(xiàn)堆排序的實(shí)例講解內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02