logger模塊


 

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")

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章