flask專案中使用logging記錄服務日誌

2021-10-05 00:17:03 字數 3412 閱讀 5387

記錄日誌,在任何專案中,都是很重要的。在flask專案中,即有flask提供的logger可以用來記錄log,也可以通過直接使用python的logging模組自定義logger來記錄。其中,日誌資訊包含了幾個等級,如下,本次測試專案中使用了兩個等級的日誌資訊

級別說明

debug

除錯模式,列印最詳細的日誌資訊

info

按照預期工作的日誌

warning

服務警告日誌資訊

error

服務錯誤日誌資訊

critical

嚴重錯誤,程式 已不能繼續執行

manager.py

│setting.py

│__init__.py

│├─cms

│ aa.py

│ __init__.py

│├─logs

error.log

info.log

)

if __name__ ==

'__main__'

:"開始你的bug之旅"

)"0.0.0.0"

)

from flask import flask

from

.setting import config

def():

# 匯入配置

"development"])

config[

"development"

]# 匯入路由

import logging

import os

# 專案根目錄

basedir = os.path.abspath(os.path.dirname(__file__)

)class

infofilter

(logging.filter)

:def

filter

(self, record)

:"""only use info

篩選, 只需要 info 級別的log

:param record:

:return:

"""if logging.info <= record.levelno < logging.error:

# 已經是info級別了

# 然後利用父類, 返回 1

return

super()

.filter

(record)

else

:return

0class

config

(object):

debug =

false

testing =

false

db_server =

"localhost"

db_port =

3306

db_user =

"root"

db_pwd =

"123456"

db_base =

"" database_uri =

# 日誌配置資訊

log_path = os.path.join(basedir,

'logs'

) log_path_error = os.path.join(log_path,

'error.log'

) log_path_info = os.path.join(log_path,

'info.log'

) log_file_max_bytes =

100*

1024

*1024

# 輪轉數量是 10 個

log_file_backup_count =

10 @staticmethod

def:

pass

class

developmentapiconfig

(config)

: debug =

true

db_server =

"localhost"

db_port =

3306

db_user =

"username"

db_pwd =

"password"

db_base =

"" database_uri =

@classmethod

def:

# email errors to the administrators

import logging

from logging.handlers import rotatingfilehandler

# formatter

formatter = logging.formatter(

'%(asctime)s %(levelname)s %(process)d %(thread)d '

'%(pathname)s %(lineno)s %(message)s'

)# filehandler info

file_handler_info = rotatingfilehandler(filename=cls.log_path_info)

file_handler_info.setformatter(formatter)

file_handler_info.setlevel(logging.info)

info_filter = infofilter(

) file_handler_info.addfilter(info_filter)

# filehandler error

file_handler_error = rotatingfilehandler(filename=cls.log_path_error)

file_handler_error.setformatter(formatter)

file_handler_error.setlevel(logging.error)

@bp.route(

"/info/"

, methods=

["get"])

defindex()

:"database_uri"

] session = databasesession(db_config)

sql =

"""select * from `order`.`sp_order` where `order_id` = '1916' limit 0, 1000"""

res = session.query_dict_fetchall(sql)

if res:

return jsonify(decimal_err(res)

)return

"訂單號不存在"

專案中使用ibatis方法

通過daomanagerbuilder載入dao.xml檔案獲取daomanager物件 dao.xml 配置如下 sql map config 配置如下 匯入database.properties檔案 設定資料庫連線屬性 匯入每乙個資料庫實體檔案 檔案指定實體類和資料表對應關係 account.x...

在專案中使用ExtJS

今天extjs官網發布了extjs最新正式版4.2.1。extjs為開發者在開發富客戶的b s應用中提供豐富的ui元件,具有統一的主題,便於快速開發,提高效率。但顯然它並不適合互聯 的開發。builds 壓縮後的extjs 體積更小,更快 docs 開發文件 examples 官方演示示例 loca...

在專案中使用springmvc

springmvc是spring框架的乙個模組,springmvc和spring無需通過中間整個層進行整合,它是乙個基於mvc的web框架。springmvc是基於方法開發的,struts2是基於類開發的。springmvc將url和controller方法對映,對映成功後springmvc生成乙個...