一. 概述
寫本文的目的是我在寫 python 項(xiàng)目的時(shí)候需要記錄日志茅撞,我忘記怎么處理了痴昧,每次都需要去網(wǎng)上查一遍赖草,好記性不如爛筆頭, 這里把查閱的內(nèi)容記錄下來(lái)剪个,方便以后查找。
python 項(xiàng)目中記錄日志,可以使用 logging 模塊扣囊,logging 模塊定義的函數(shù)和類為應(yīng)用程序和庫(kù)的開發(fā)實(shí)現(xiàn)了一個(gè)靈活的事件日志系統(tǒng)乎折。logging 模塊是Python的一個(gè)標(biāo)準(zhǔn)庫(kù)模塊,由標(biāo)準(zhǔn)庫(kù)模塊提供日志記錄API的關(guān)鍵好處是所有Python模塊都可以使用這個(gè)日志記錄功能侵歇。所以骂澄,你的應(yīng)用日志可以將你自己的日志信息與來(lái)自第三方模塊的信息整合起來(lái)。
二. logging 配置
在 __init__.py
文件中做如下配置:
import logging.handlers
import os
# 設(shè)置日志文件的存放目錄
log_dir = 'logdir'
# 設(shè)置日志文件的名字
log_filename = 'app.log'
# 日志格式化輸出
LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
# 日期格式
DATE_FORMAT = "%Y-%m-%d %H:%M:%S %p"
log_dir = os.path.dirname(os.getcwd()) + '/' + log_dir
if not os.path.exists(log_dir):
os.makedirs(log_dir)
log_filename = log_dir + '/' + log_filename
# 一個(gè)日志50M, 超過(guò) app.log 指定的大小會(huì)自動(dòng)滾動(dòng)創(chuàng)建日志文件 app.log.1, app.log.2, app.log.3
fp = logging.handlers.RotatingFileHandler(log_filename, maxBytes=1024 * 1024 * 50,
backupCount=30,encoding='utf-8')
# 再創(chuàng)建一個(gè)handler惕虑,用于輸出到控制臺(tái)
fs = logging.StreamHandler()
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT, handlers=[fp, fs])
# 測(cè)試
if __name__ == '__main__':
logging.info("打印日志")
控制臺(tái)輸出日志如下:
2021-11-10 19:33:59 PM - __init__.py[line:29] - INFO: 打印日志