logging模塊是用來記錄日誌的,有以下5個級別
logging.info()
logging.debug()
logging.error()
logging.warning()
logging.critical()
logging模塊涉及4個主要的類:
logger:提供應用程序可以直接使用的接口
handler:將日誌發送到合適的目的輸出
filter:用來過濾日誌的
formatter:決定日誌的輸出格式
在formatter中以下格式的含義是:
%(filename)s:調用日誌輸出函數模塊的文件名
%(lineno)s:打印對應出現問題日誌的行數
%(levelname)s:打印出問題日誌的級別
%(module)s:調用日誌輸出的模塊名
%(funcName)s:調用函數輸出的函數名
%(process)s:pycharm啓動了python的進程號,結束之後,進程消失
import logging
logger=logging.getLogger("TEST-LOG")
logger.setLevel(logging.DEBUG)
先得到一個logger
ch=logging.StreamHandler()
ch.setLevel(logging.WARNING)
以屏幕輸出的方式,並且設定日誌最低級別
fh=logging.FileHandler("acess.log")
fh.setLevel(logging.ERROR)
將錯誤日誌打印到文件中
fh_formatter=logging.Formatter('%(asctime)s %(process)s %(filename)s:%(lineno)d '
' -%(levelname)s: %(message)s')
分別設定屏幕輸出和文件輸出的格式
ch_formatter=logging.Formatter('%(asctime)s - %(name)s -%(levelname)s - %(message)s')
ch.setFormatter(ch_formatter)
fh.setFormatter(fh_formatter)
logger.addHandler(fh)
logger.addHandler(ch)
添加對象
logger.warning("ddd")
logger.error("error is happened...")
Handler可以管理文件大小,當文件到達一定大小之後,對文件的進行分割,或者以時間爲分割線進行分割。代碼如下所示:
import logging,time
from logging import handlers
logger=logging.getLogger("TEST")
得到一個logger
log_file="timelog.log"
日誌的名稱
#fh=handlers.RotatingFileHandler(filename=log_file,maxBytes=3,backupCount=3,encoding="utf-8")
上面是以文件大小爲截斷
fh=handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3,encoding="utf-8")
上面是以時間爲截斷,以5秒爲截斷時間
formatter=logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s')
設置格式
fh.setFormatter(formatter)
設置文件的格式
logger.addHandler(fh)
添加對象
logger.warning("test1")
time.sleep(2)
logger.warning("test2")
logger.warning("test3")
time.sleep(2)
logger.warning("test4")
time.sleep(2)
logger.warning("test5")
logger.warning("test6")