摘要:用于便捷記錄日志且線程安全的模塊日志級(jí)別日志一共分成個(gè)等級(jí),從低到高分別是。詳細(xì)的信息通常只出現(xiàn)在診斷問(wèn)題上確認(rèn)一切按預(yù)期運(yùn)行一個(gè)跡象表明一些意想不到的事情發(fā)生了或表明一些問(wèn)題在不久的將來(lái)例如。這個(gè)等級(jí),也分別對(duì)應(yīng)種打日志的方法。
用于便捷記錄日志且線程安全的模塊 1、日志級(jí)別
日志一共分成5個(gè)等級(jí),從低到高分別是:DEBUG INFO WARNING ERROR CRITICAL。2、日志輸出DEBUG:詳細(xì)的信息,通常只出現(xiàn)在診斷問(wèn)題上
INFO:確認(rèn)一切按預(yù)期運(yùn)行
WARNING:一個(gè)跡象表明,一些意想不到的事情發(fā)生了,或表明一些問(wèn)題在不久的將來(lái)(例如。磁盤(pán)空間低”)。這個(gè)軟件還能按預(yù)期工作。
ERROR:更嚴(yán)重的問(wèn)題,軟件沒(méi)能執(zhí)行一些功能
CRITICAL:一個(gè)嚴(yán)重的錯(cuò)誤,這表明程序本身可能無(wú)法繼續(xù)運(yùn)行。
這5個(gè)等級(jí),也分別對(duì)應(yīng)5種打日志的方法: debug 、info 、warning 、error 、critical。
默認(rèn)的是WARNING,當(dāng)在WARNING或之上時(shí)才被跟蹤。
有兩種方式記錄跟蹤,一種輸出控制臺(tái),另一種是記錄到文件中,如日志文件。3、注意問(wèn)題
用Python的logging模塊記錄日志時(shí),遇到了重復(fù)記錄日志的問(wèn)題,第一條記錄寫(xiě)一次,第二條記錄寫(xiě)兩次,第三條記錄寫(xiě)三次。。。這樣記日志可不行。使用方法 1、單日志文件
原因:沒(méi)有移除handler?
解決:在日志記錄完之后removeHandler
創(chuàng)建一個(gè)日志模塊.py的文件
import logging logging.basicConfig(filename="log.log", format="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S %p", level=10) logging.debug("debug") logging.info("info") logging.warning("warning") logging.error("error") logging.critical("critical") logging.log(10,"log")
運(yùn)行:
從運(yùn)行結(jié)果來(lái)看,創(chuàng)建了一個(gè)log.log日志文件,時(shí)間是自動(dòng)生產(chǎn)的,module是我們當(dāng)前的python代碼文件名。
日志等級(jí):
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0
注:只有【當(dāng)前寫(xiě)等級(jí)】大于【日志等級(jí)】時(shí),日志文件才被記錄。
日志記錄格式:
%(name)s Logger的名字 %(levelno)s 數(shù)字形式的日志級(jí)別 %(levelname)s 文本形式的日志級(jí)別 %(pathname)s 調(diào)用日志輸出函數(shù)的模塊的完整路徑名 %(filename)s 調(diào)用日志輸出函數(shù)的模塊的文件名 %(module)s 調(diào)用日志輸出函數(shù)的模塊名 %(funcName)s 調(diào)用日志輸出函數(shù)的函數(shù)名 %(lineno)d 調(diào)用日志輸出函數(shù)的語(yǔ)句所在的代碼行 %(created)f 當(dāng)前時(shí)間,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示 %(relativeCreated)d 輸出日志信息時(shí)的,自Logger創(chuàng)建以 來(lái)的毫秒數(shù) %(asctime)s 字符串形式的當(dāng)前時(shí)間。默認(rèn)格式是 “2003-07-08 16:49:45,896”。逗號(hào)后面的是毫秒 %(thread)d 線程ID。 %(threadName)s 線程名。 %(process)d 進(jìn)程ID。 %(message)s 用戶輸出的消息2、多文件日志
對(duì)于上述記錄日志的功能,只能將日志記錄在單文件中,如果想要設(shè)置多個(gè)日志文件,logging.basicConfig將無(wú)法完成,需要自定義文件和日志操作對(duì)象。
import logging # 定義文件 file1 = logging.FileHandler(filename="l1.log", mode="a", encoding="utf-8") fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S") file1.setFormatter(fmt) file2 = logging.FileHandler(filename="l2.log", mode="a", encoding="utf-8") fmt = logging.Formatter() file2.setFormatter(fmt) # 定義日志 logger1 = logging.Logger(name="這里是name", level=logging.ERROR) logger1.addHandler(file1) logger1.addHandler(file2) # logger1.removeHandler(file1) # logger1.removeHandler(file2) # 寫(xiě)日志 logger1.error(msg="這里是msg111") logger1.log(msg="這里是msg222", level=50) # 定義文件 file3 = logging.FileHandler(filename="l3.log", mode="a", encoding="utf-8") fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S") file3.setFormatter(fmt) # 定義日志 logger2 = logging.Logger(name="這里是name222222", level=logging.INFO) logger2.addHandler(file3) # 寫(xiě)日志 logger2.info("這里是msg333333")
運(yùn)行:
如上述創(chuàng)建的兩個(gè)日志對(duì)象
當(dāng)使用【logger1】寫(xiě)日志時(shí),會(huì)將相應(yīng)的內(nèi)容寫(xiě)入 l1.log 和 l2.log 文件中
當(dāng)使用【logger2】寫(xiě)日志時(shí),會(huì)將相應(yīng)的內(nèi)容寫(xiě)入 l3.log 文件中
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41635.html
摘要:一什么是是一個(gè)基于瀏覽器的自動(dòng)化工具,她提供了一種跨平臺(tái)跨瀏覽器的端到端的自動(dòng)化解決方案。模塊主要用來(lái)記錄用例執(zhí)行情況,以便于高效的調(diào)查用例失敗信息以及追蹤用例執(zhí)行情況。測(cè)試用例倉(cāng)庫(kù)用例倉(cāng)庫(kù)主要用來(lái)組織自動(dòng)化測(cè)試用例。 一、什么是Selenium? Selenium是一個(gè)基于瀏覽器的自動(dòng)化工具,她提供了一種跨平臺(tái)、跨瀏覽器的端到端的web自動(dòng)化解決方案。Selenium主要包括三部分:...
摘要:項(xiàng)目的一個(gè)需求是解析的日志文件。項(xiàng)目中已經(jīng)按照業(yè)務(wù)規(guī)則對(duì)日志文件進(jìn)行了處理命名規(guī)則如下并且所有的日志文件存放在統(tǒng)一路徑下。模塊使用緩存,所以會(huì)耗費(fèi)內(nèi)存,耗費(fèi)量與要解析的文件相關(guān)。剩下的工作就是根據(jù)業(yè)務(wù)需要,對(duì)獲得的基本信息進(jìn)行處理。 項(xiàng)目的一個(gè)需求是解析nginx的日志文件。 簡(jiǎn)單的整理如下: 日志規(guī)則描述 首先要明確自己的Nginx的日志格式,這里采用默認(rèn)Nginx日志格式: ...
摘要:項(xiàng)目的一個(gè)需求是解析的日志文件。項(xiàng)目中已經(jīng)按照業(yè)務(wù)規(guī)則對(duì)日志文件進(jìn)行了處理命名規(guī)則如下并且所有的日志文件存放在統(tǒng)一路徑下。模塊使用緩存,所以會(huì)耗費(fèi)內(nèi)存,耗費(fèi)量與要解析的文件相關(guān)。剩下的工作就是根據(jù)業(yè)務(wù)需要,對(duì)獲得的基本信息進(jìn)行處理。 項(xiàng)目的一個(gè)需求是解析nginx的日志文件。 簡(jiǎn)單的整理如下: 日志規(guī)則描述 首先要明確自己的Nginx的日志格式,這里采用默認(rèn)Nginx日志格式: ...
摘要:的繼承關(guān)系使用做日志輸出時(shí),首先我們需要一個(gè)創(chuàng)建一個(gè)對(duì)象。再設(shè)計(jì)多級(jí)別的日志系統(tǒng)時(shí),尤其要注意這點(diǎn)。當(dāng)然,這樣做其實(shí)是有悖于的本意的。是什么是一個(gè)程序內(nèi)全局唯一的,所有對(duì)象的祖先。因此,直接修改是危險(xiǎn)的。 0x00 python logging的繼承關(guān)系 使用python做日志輸出時(shí),首先我們需要一個(gè)創(chuàng)建一個(gè)Logger對(duì)象:import logging; logger = log...
摘要:確認(rèn)一切按預(yù)期運(yùn)行。表明發(fā)生了一些意外,或者不久的將來(lái)會(huì)發(fā)生問(wèn)題如磁盤(pán)滿了。由于更嚴(yán)重的問(wèn)題,軟件已不能執(zhí)行一些功能了。嚴(yán)重錯(cuò)誤,表明軟件已不能繼續(xù)運(yùn)行了。對(duì)于不能獲取的名稱(chēng),則記錄到模塊。 最近在寫(xiě)一些python腳本,總是使用print來(lái)打印信息感覺(jué)很low,所以抽空研究了一下python的logging庫(kù),來(lái)優(yōu)雅的來(lái)打印和記錄日志: 一、簡(jiǎn)單的將日志打印到屏幕: import l...
閱讀 1690·2021-11-15 11:38
閱讀 4551·2021-09-22 15:33
閱讀 2350·2021-08-30 09:46
閱讀 2198·2019-08-30 15:43
閱讀 842·2019-08-30 14:16
閱讀 2089·2019-08-30 13:09
閱讀 1268·2019-08-30 11:25
閱讀 718·2019-08-29 16:42