Python logging模塊用法示例
本文實(shí)例講述了Python logging模塊用法。分享給大家供大家參考,具體如下:
logging模塊
函數(shù)式簡(jiǎn)單配置
import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')
logging.basicConfig()
函數(shù)中可通過具體參數(shù)來更改logging模塊默認(rèn)行為,可用參數(shù)有:
- filename:用指定的文件名創(chuàng)建FiledHandler,這樣日志會(huì)被存儲(chǔ)在指定的文件中。
- filemode:文件打開方式,在指定了filename時(shí)使用這個(gè)參數(shù),默認(rèn)值為“a”還可指定為“w”。
- format:指定handler使用的日志顯示格式。
- datefmt:指定日期時(shí)間格式。
- level:設(shè)置rootlogger(后邊會(huì)講解具體概念)的日志級(jí)別
- stream:用指定的stream創(chuàng)建StreamHandler??梢灾付ㄝ敵龅?code>sys.stderr,
sys.stdout
或者文件(f=open('test.log','w'))
,默認(rèn)為sys.stderr
。若同時(shí)列出了filename和stream兩個(gè)參數(shù),則stream參數(shù)會(huì)被忽略。
format參數(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ù)的語句所在的代碼行 |
%(created)f | 當(dāng)前時(shí)間,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示 |
%(relativeCreated)d | 輸出日志信息時(shí)的,自Logger創(chuàng)建以 來的毫秒數(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 | 用戶輸出的消息 |
logging庫提供了多個(gè)組件:Logger、Handler、Filter、Formatter。Logger對(duì)象提供應(yīng)用程序可直接使用的接口,Handler發(fā)送日志到適當(dāng)?shù)哪康牡兀現(xiàn)ilter提供了過濾日志信息的方法,F(xiàn)ormatter指定日志顯示格式。另外,可以通過:logger.setLevel(logging.Debug)
設(shè)置級(jí)別,當(dāng)然,也可以通過fh.setLevel(logging.Debug)
單對(duì)文件流設(shè)置某個(gè)級(jí)別。
def my_logger(filename,leval,file = True,stream = True): logger = logging.getLogger() formatter = logging.Formatter (fmt = '%(asctime)s--%(message)s----%(name)s--%(levelname)s--%(lineno)d', datefmt = '%d/%m/%y %H:%M:%S') logger.setLevel(leval) if file: file_handler = logging.FileHandler(filename, encoding='utf-8') logger.addHandler(file_handler) file_handler.setFormatter(formatter) if stream: stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) return logger logger = my_logger('logging',logging.DEBUG) logger.warning('warn!!!')
運(yùn)行結(jié)果:
28/08/18 09:48:53--warn!!!----root--WARNING--27
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python日志操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python中11種NumPy高級(jí)操作總結(jié)
熬夜整了了11種Numpy的高級(jí)操作,每一種都有參數(shù)解釋與小例子輔助說明。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-05-05Python 中的 XML 轉(zhuǎn)換利器xml2dict詳解
xml2dict是一個(gè)Python庫,可以將XML數(shù)據(jù)轉(zhuǎn)換為字典,也支持反向轉(zhuǎn)換,它簡(jiǎn)化了XML的處理,使之像處理JSON一樣簡(jiǎn)單,適用于Web服務(wù)數(shù)據(jù)交換、配置文件讀取等場(chǎng)景,安裝簡(jiǎn)單,使用方便,還可以通過自定義轉(zhuǎn)換器處理XML屬性和命名空間2024-10-10Python推導(dǎo)式簡(jiǎn)單示例【列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式】
這篇文章主要介紹了Python推導(dǎo)式,結(jié)合簡(jiǎn)單實(shí)例形式分析了Python列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式基本使用方法,需要的朋友可以參考下2018-12-12Python通過4種方式實(shí)現(xiàn)進(jìn)程數(shù)據(jù)通信
這篇文章主要介紹了Python通過4種方式實(shí)現(xiàn)進(jìn)程數(shù)據(jù)通信,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03