Python logging模塊用法示例
本文實例講述了Python logging模塊用法。分享給大家供大家參考,具體如下:
logging模塊
函數(shù)式簡單配置
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模塊默認行為,可用參數(shù)有:
- filename:用指定的文件名創(chuàng)建FiledHandler,這樣日志會被存儲在指定的文件中。
- filemode:文件打開方式,在指定了filename時使用這個參數(shù),默認值為“a”還可指定為“w”。
- format:指定handler使用的日志顯示格式。
- datefmt:指定日期時間格式。
- level:設(shè)置rootlogger(后邊會講解具體概念)的日志級別
- stream:用指定的stream創(chuàng)建StreamHandler。可以指定輸出到
sys.stderr,sys.stdout或者文件(f=open('test.log','w')),默認為sys.stderr。若同時列出了filename和stream兩個參數(shù),則stream參數(shù)會被忽略。
format參數(shù)中可能用到的格式化串:
| %(name)s | Logger的名字 |
| %(levelno)s | 數(shù)字形式的日志級別 |
| %(levelname)s | 文本形式的日志級別 |
| %(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 | 當前時間,用UNIX標準的表示時間的浮 點數(shù)表示 |
| %(relativeCreated)d | 輸出日志信息時的,自Logger創(chuàng)建以 來的毫秒數(shù) |
| %(asctime)s | 字符串形式的當前時間。默認格式是 “2003-07-08 16:49:45,896”。逗號后面的是毫秒 |
| %(thread)d | 線程ID??赡軟]有 |
| %(threadName)s | 線程名??赡軟]有 |
| %(process)d | 進程ID??赡軟]有 |
| %(message)s | 用戶輸出的消息 |
logging庫提供了多個組件:Logger、Handler、Filter、Formatter。Logger對象提供應(yīng)用程序可直接使用的接口,Handler發(fā)送日志到適當?shù)哪康牡?,F(xiàn)ilter提供了過濾日志信息的方法,F(xiàn)ormatter指定日志顯示格式。另外,可以通過:logger.setLevel(logging.Debug)設(shè)置級別,當然,也可以通過fh.setLevel(logging.Debug)單對文件流設(shè)置某個級別。
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!!!')
運行結(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īng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python with語句上下文管理器兩種實現(xiàn)方法分析
這篇文章主要介紹了Python with語句上下文管理器兩種實現(xiàn)方法,結(jié)合實例形式較為詳細的分析了Python上下文管理器的相關(guān)概念、功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-02-02
使用Python的Flask框架表單插件Flask-WTF實現(xiàn)Web登錄驗證
Flask處理表單除了本身的WTForms包,使用Flask-WTF擴展來增強表單功能也是很多開發(fā)者的選擇,這里我們就來講解如何使用Python的Flask框架表單插件Flask-WTF實現(xiàn)Web登錄驗證2016-07-07
Python模擬鋼琴鍵盤實現(xiàn)演奏數(shù)鴨子歌曲
前幾天上課老師給我們講了兩個模塊,然后利用這兩個模塊來模擬鋼琴鍵盤去簡單地演奏《數(shù)鴨子》今天來分享給大家,感興趣的可以了解一下2022-11-11
Flask與數(shù)據(jù)庫的交互插件Flask-Sqlalchemy的使用
在構(gòu)建Web應(yīng)用時,與數(shù)據(jù)庫的交互是必不可少的部分,本文主要介紹了Flask與數(shù)據(jù)庫的交互插件Flask-Sqlalchemy的使用,具有一定的參考價值,感興趣的可以了解一下2024-03-03

