logging日志模塊

作用:報(bào)告狀態(tài)、錯(cuò)誤和信息消息

1、配置級(jí)別setLevel

大多數(shù)應(yīng)用都配置為將日志記入文件,使用basicConfig()函數(shù)建立默認(rèn)處理器,從而將調(diào)試消息寫至一個(gè)文件。

import logging
logging.debug(u"蒼井空")
logging.info(u"麻生希")
logging.warning(u"小澤瑪利亞")
logging.error(u"桃谷繪里香")
logging.critical(u"瀧澤蘿拉")

這能看到打印后三個(gè),因?yàn)槟J(rèn)的root logger的level是logging.WARNING,低于該級(jí)別的就不輸出了。
級(jí)別排序:critical > error > warning > info > debug
如果需要顯示低于wanrning級(jí)別的內(nèi)容,setLevel(logging.DEBUG)來顯示:

import logging
logger=logging.getLogger()
logger.setLevel(logging.INFO)
logging.debug(u"可以采取debug、info的級(jí)別的內(nèi)容也可以顯示在控制臺(tái)上了")
logging.info(u'info也能顯示')
logging.warning(u"小澤瑪利亞")

2、常用函數(shù)

  • logging.Formatter():配置了日志時(shí)間格式,在里邊自定義設(shè)置時(shí)間和日期,輸出日志的時(shí)候?qū)?huì)按照設(shè)置的格式顯示內(nèi)容。
  • logger.setLevel():設(shè)置日志級(jí)別
  • logger.addHandler()和logger.removeHandler():添加和刪除一個(gè)Handler
  • logger.Handler: Handler基于日志級(jí)別對(duì)日志進(jìn)行分發(fā),如設(shè)置warning級(jí)別的Handler只會(huì)處理warning及以上級(jí)別的日志

3、Handler使用

不知道為啥basicConfig全局配置在我的環(huán)境中不能使用,因此先聲明一個(gè)Logger對(duì)象,使用Handler來指定對(duì)象,使用Handler對(duì)象指定Formatter對(duì)象單獨(dú)配置輸出格式,最后給Logger對(duì)象添加對(duì)應(yīng)的Handler即可,日志會(huì)被輸出到output.log中,內(nèi)容如下:

import logging
logger=logging.getLogger()
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler = logging.FileHandler('output.log')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.debug(u"這里可以采取debug、info的級(jí)別的內(nèi)容也可以顯示在控制臺(tái)上了")
logger.info(u'info也能顯示')
logging.warning(u"小澤瑪利亞")

Handler種類

  • StreamHandler:logging.StreamHandler;日志輸出到流,可以是 sys.stderr,sys.stdout 或者文件。
  • FileHandler:logging.FileHandler;日志輸出到文件。
  • BaseRotatingHandler:logging.handlers.BaseRotatingHandler;基本的日志回滾方式。
  • RotatingHandler:logging.handlers.RotatingHandler;日志回滾方式,支持日志文件最大數(shù)量和日志文件回滾。
  • TimeRotatingHandler:logging.handlers.TimeRotatingHandler;日志回滾方式,在一定時(shí)間區(qū)域內(nèi)回滾日志文件。
  • SocketHandler:logging.handlers.SocketHandler;遠(yuǎn)程輸出日志到TCP/IP sockets。
  • DatagramHandler:logging.handlers.DatagramHandler;遠(yuǎn)程輸出日志到UDP sockets。
  • SMTPHandler:logging.handlers.SMTPHandler;遠(yuǎn)程輸出日志到郵件地址。
  • SysLogHandler:logging.handlers.SysLogHandler;日志輸出到syslog。
  • NTEventLogHandler:logging.handlers.NTEventLogHandler;遠(yuǎn)程輸出日志到Windows NT/2000/XP的事件日志。
  • MemoryHandler:logging.handlers.MemoryHandler;日志輸出到內(nèi)存中的指定buffer。
  • HTTPHandler:logging.handlers.HTTPHandler;通過”GET”或者”POST”遠(yuǎn)程輸出到HTTP服務(wù)器。

Formatter

我們指定Formatter,傳入fmt和datefmt參數(shù),指定日志結(jié)果的輸出格式和時(shí)間格式,然后handler通過setFormatter()方式設(shè)置此Formatter對(duì)象即可

  • %(levelno)s: 打印日志級(jí)別的數(shù)值
  • %(levelname)s: 打印日志級(jí)別名稱
  • %(pathname)s: 打印當(dāng)前執(zhí)行程序的路徑,其實(shí)就是sys.argv[0]
  • %(filename)s: 打印當(dāng)前執(zhí)行程序名
  • %(funcName)s: 打印日志的當(dāng)前函數(shù)
  • %(lineno)d: 打印日志的當(dāng)前行號(hào)
  • %(asctime)s: 打印日志的時(shí)間
  • %(thread)d: 打印線程ID
  • %(threadName)s: 打印線程名稱
  • %(process)d: 打印進(jìn)程ID
  • %(message)s: 打印日志信息

參考文獻(xiàn):
https://www.cnblogs.com/liuyanhang/p/10795522.html
https://www.cnblogs.com/xianyulouie/p/11041777.html
https://docs.python.org/3/howto/logging.html#logging-basic-tutorial

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容