午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Python中的logging模塊解析

 大傻子的文淵閣 2022-11-13

前言

自動(dòng)化測試中,為了定位問題,調(diào)試框架代碼,需要使用日志模塊,今天我們重點(diǎn)講解Python中的logging模塊,在學(xué)習(xí)使用logging模塊前,我們先要了解logging模塊的四大天王:logger、handler、filter、formatter

一.logging模塊的四大組件

logger:日志器,提供程序可使用的接口

handler:處理器,用于寫入日志文件并輸出到指定位置,如文件、控制臺(tái)或網(wǎng)絡(luò)等

filter:過濾器,用于輸出符合指定條件的日志記錄

formatter:格式器,決定日志記錄的輸出格式

二.如何使用logging模塊---基本用法

1.創(chuàng)建logger對象,返回一個(gè)日志器

logger = logging.getlogger()

2.設(shè)置日志等級(jí)

logger.setLevel("DEBUG") #設(shè)置日志等級(jí)為debug

常見的日志級(jí)別有:DEBUG、INFO、WARNING、ERROR、CRITICAL,具體用法如下:

DEBUG:最低級(jí)別,追蹤問題時(shí)使用

INFO:記錄程序中一般事件的信息,或確認(rèn)一切工作正常

WARNING:記錄信息,用于警告

ERROR:用于記錄程序報(bào)錯(cuò)信息

CRITICAL:最高級(jí)別,記錄可能導(dǎo)致程序崩潰的錯(cuò)誤

3.創(chuàng)建一個(gè)處理器對象

fh = logging.FileHandler(filename="bbb.log", mode='a', encoding="utf-8", delay=False) #創(chuàng)建一個(gè)文件處理器,日志輸入文件,需要指定文件名稱,寫入的模式,編碼格式等

4.創(chuàng)建一個(gè)格式器對象

fmt = logging.Formatter("[%(asctime)s]-[%(levelname)s]-[%(pathname)s]-[Line:%(lineno)d]-[LoggerInfo:%(message)s]") #一般格式器中要定義好日志產(chǎn)生時(shí)間,日志級(jí)別,產(chǎn)生日志的模塊全路徑,模塊的哪一行,具體的日志信息等

5.為處理器添加格式

fh.setFormatter(fmt=fmt),將第4步中生成的格式器給第3步生成的處理器“吞吃”

6.為日志器添加處理方式

logger.addHandler(fh),將設(shè)置格式后的處理器對象給日志器“吞吃”,使日志器有處理日志的能力

7.調(diào)用日志器對象,生成日志

logger.debug("這是一個(gè)debug錯(cuò)誤")

8.源碼如下:

import logging #導(dǎo)入日志模塊
logger = logging.getLogger() #創(chuàng)建日志器logger.setLevel(logging.DEBUG) #設(shè)置日志的打印級(jí)別fh = logging.FileHandler(filename="kkk.log",mode='a',encoding="utf-8") #創(chuàng)建日志處理器,用文件存放日志sh = logging.StreamHandler()#創(chuàng)建日志處理器,在控制臺(tái)打印#創(chuàng)建格式器,指定日志的打印格式fmt = logging.Formatter("[%(asctime)s]-[%(levelname)s]-[%(filename)s]-[Line:%(lineno)d]-[Msg:%(message)s]")#給處理器設(shè)置格式fh.setFormatter(fmt=fmt)sh.setFormatter(fmt=fmt)#給日志器添加處理器logger.addHandler(fh)logger.addHandler(sh)#調(diào)用日志器logger.debug("ajffasfdsas")

三.優(yōu)化

上面的日志的基本用法,沒有做封裝,實(shí)際工作中使用不方便,我們接下來將其進(jìn)行封裝,方便需要使用時(shí),進(jìn)行調(diào)用,同時(shí)將具體包括將日志按日期分別存放到不同的文件,日志名稱以時(shí)間命名;具體方法如下:???????

import logging,os,time
class Logging():
    def make_log_dir(self,dirname='logs'): #創(chuàng)建存放日志的目錄,并返回目錄的路徑        now_dir = os.path.dirname(__file__)        father_path = os.path.split(now_dir)[0]        path = os.path.join(father_path,dirname)        path = os.path.normpath(path)        if not os.path.exists(path):            os.mkdir(path)        return path
    def get_log_filename(self):#創(chuàng)建日志文件的文件名格式,便于區(qū)分每天的日志        filename = "{}.log".format(time.strftime("%Y-%m-%d",time.localtime()))        filename = os.path.join(self.make_log_dir(),filename)        filename = os.path.normpath(filename)        return filename
    def log(self,level='DEBUG'):#生成日志的主方法,傳入對那些級(jí)別及以上的日志進(jìn)行處理        logger = logging.getLogger()#創(chuàng)建日志器        levle = getattr(logging,level) #獲取日志模塊的的級(jí)別對象屬性        logger.setLevel(level)#設(shè)置日志級(jí)別        if not logger.handlers: #作用,防止重新生成處理器            sh = logging.StreamHandler()#創(chuàng)建控制臺(tái)日志處理器            fh = logging.FileHandler(filename=self.get_log_filename(),mode='a',encoding="utf-8")#創(chuàng)建日志文件處理器            #創(chuàng)建格式器            fmt = logging.Formatter("%(asctime)s-%(levelname)s-%(filename)s-Line:%(lineno)d-Message:%(message)s")            #給處理器添加格式            sh.setFormatter(fmt=fmt)            fh.setFormatter(fmt=fmt)            #給日志器添加處理器,過濾器一般在工作中用的比較少,如果需要精確過濾,可以使用過濾器            logger.addHandler(sh)            logger.addHandler(fh)        return logger #返回日志器
if __name__ == '__main__':    logger = Logging().log(level='DEBUG') #調(diào)用封裝的日志方法,生成處理后的日志器    logger.debug("1111111111111111111111") #使用日志器生成日志    logger.info("222222222222222222222222")    logger.error("附件為IP飛機(jī)外婆家二分IP文件放")    logger.warning("3333333333333333333333333333")    logger.critical("44444444444444444444444444")


這些資料,對于做【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個(gè)倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術(shù)行業(yè),一定要提升技術(shù)功底。希望對大家有所幫助…..

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多