記錄日志作為做項(xiàng)目最基本的功能之一,在Python中是通過(guò)Logging模塊實(shí)現(xiàn)的橙数。簡(jiǎn)單記錄一下Python Logging的模板,后續(xù)方便直接引用灯帮。
Logging的基本常識(shí)不在贅述,可以通過(guò)各種渠道學(xué)習(xí)迎献。附上官網(wǎng)鏈接:https://docs.python.org/zh-cn/3.7/howto/logging.html#logging-basic-tutorial
整個(gè)模板的結(jié)構(gòu)是:
1619230471573.jpg
一腻贰、核心是loggers.py
import logging
from logging.handlers import RotatingFileHandler
def init():
global root
# 定義類型為RotatingFileHandler的handlers播演,非必須
filename = "log.txt"
fh = RotatingFileHandler(filename, maxBytes=1024, backupCount=3)
# logging配置信息
logging.basicConfig(
format="%(asctime)s %(name)s %(pathname)s[line:%(lineno)d] %(levelname)s: %(message)s",
level=logging.DEBUG,
handlers=[fh]
)
root = get()
def get(name=None):
return logging.getLogger(name)
通過(guò)logging.basicConfig定義Logging的基本配置信息,其中format定義日志輸出格式翼闽、level定義輸出級(jí)別洲炊、handlers定義處理器(可以沒(méi)有)。
Logger是有層級(jí)關(guān)系的暂衡,這里定義的root Logger是最頂層日志器,我們通過(guò)定義函數(shù)get()去創(chuàng)建子Logger日志拓提。
二隧膘、core中存放業(yè)務(wù)代碼
在core中可以寫業(yè)務(wù)代碼,寫日志的方式都比較熟悉蹦疑,會(huì)有debug歉摧、info、error等叁温,根據(jù)需要來(lái)即可膝但。
from app import loggers
logs = loggers.get(__name__) # 創(chuàng)建子Logger
def message():
logs.debug("this is a debug message")
logs.debug("this is a warning message")
三谤草、程序入口與結(jié)果
main.py中初始化Logger莺奸,并調(diào)用業(yè)務(wù)代碼
from app import loggers
from app.core import work1, work2
if __name__ == '__main__':
loggers.init()
work1.message()
work2.message()
記錄到的日志信息灭贷,符合預(yù)期略贮。
1619231936500.jpg
四刨肃、總結(jié)
基本上Python類的項(xiàng)目都可以沿用這個(gè)日志模塊的模板箩帚,具體項(xiàng)目中可以不通過(guò)Handler去真的“記錄日志”,比如通過(guò)k8s盔然、gunicorn等組件愈案,去“重定向”日志信息也是可以的鹅搪。