先看一段代碼:
import logging
from logging.handlers import TimedRotatingFileHandler
def init_logger(port):
logFilePath = 'logs/test'+str(port)+'.log'
logger = logging.getLogger()
logger.setLevel(logging.INFO) #設(shè)置log級(jí)別两疚,INFO(包含)以上都會(huì)報(bào)警
handler = TimedRotatingFileHandler(logFilePath,
when = 'midnight',
interval = 1,
backupCount=0)
#設(shè)置記錄格式讲婚,按照 [當(dāng)前時(shí)間-等級(jí)-信息] 記錄
formatter = logging.Formatter('[%(asctime)s-%(levelname)s - %(message)s]')
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
該代碼的功能是在logs/目錄下按天記錄日志轩娶,并在每天凌晨00:00新建新的日志文件欧瘪。假設(shè)傳入的port為10086葬毫,則日志命名規(guī)則為:test10086.log.xxxx-xx-xx题篷,其中xxxx-xx-xx為年-月-日词身。
TimedRotatingFileHandler:
- TimedRotatingFileHandler 可以理解為是一種可設(shè)置固定時(shí)間間隔的日志記錄類(lèi),它被集成在 logging 中番枚,直接調(diào)用進(jìn)行實(shí)例化和配置就可以使用
- TimedRotatingFileHandler 的構(gòu)造函數(shù)為:
TimedRotatingFileHandler( filename , when , interval , backupCount) # filename :輸出日志的文件名稱(chēng)前綴偿枕,比如說(shuō) test.log 這樣的就是日志文件名前綴 # when :一個(gè)字符串,定義了日志切分的間隔時(shí)間單位户辫,這是一個(gè)枚舉類(lèi)渐夸,可選參數(shù)如下: # "S":Second 秒 # "M":Minutes 分鐘 # "H":Hour 小時(shí) # "D":Days 天 # "W":Week day(0 = Monday) # "midnight":Roll over at midnight # interval:間隔時(shí)間單位的個(gè)數(shù),指等待多少個(gè) when 的時(shí)間后 Logger 會(huì)自動(dòng)重建日志 # 繼續(xù)進(jìn)行記錄渔欢。如果創(chuàng)建的文件和已有文件存在重名的情況墓塌,則會(huì)對(duì)歷史的文件 # 進(jìn)行覆蓋操作。 # backupCount :保留日志的文件個(gè)數(shù),默認(rèn)參數(shù)為0苫幢,表示保留所有日志访诱。 # 如果設(shè)置為 N(正整數(shù)),則只保留最多N個(gè)最新的日志文件韩肝。