logging.basicConfig函数
?在UI自動化應用中,經常會出錯,打log就是一個很重要的環節,python的logging.basicConfig函數?真是既方便,又簡單,每次粘貼到用例前,就可以打log了。?
? ? ? ??logging模塊是Python內置的標準模塊,主要用于輸出運行日志,可以設置輸出日志的等級、日志保存路徑、日志文件回滾等。
相比print,具備如下優點:
? ? ? ? 可以通過設置不同的日志等級,在release版本中只輸出重要信息,而不必顯示大量的調試信息;
print將所有信息都輸出到標準輸出中,嚴重影響開發者從標準輸出中查看其它數據;logging則可以由開發者決定將信息輸出到什么地方,以及怎么輸出;
在python中,logging由logger,handler,filter,formater四個部分組成:
? ? ? ? logger是提供我們記錄日志的方法;handler是讓我們選擇日志的輸出地方,如:控制臺,文件,郵件發送等,一個logger添加多個handler;filter是給用戶提供更加細粒度的控制日志的輸出內容;formater用戶格式化輸出日志的信息。
python中配置logging有三種方式
第一種:基礎配置,logging.basicConfig(filename="config.log",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO)。
第二種:使用配置文件的方式配置logging,使用fileConfig(filename,defaults=None,disable_existing_loggers=Ture )函數來讀取配置文件。
第三種:使用一個字典方式來寫配置信息,然后使用dictConfig(dict,defaults=None, disable_existing_loggers=Ture )函數來瓦按成logging的配置.
一 、level
日志一共分成5個等級,從低到高分別是:DEBUG ,INFO ,WARNING ,ERROR, CRITICAL。
DEBUG:詳細的信息,通常只出現在診斷問題上
INFO:確認一切按預期運行
WARNING:一個跡象表明,一些意想不到的事情發生了,或表明一些問題在不久的將來(例如。磁盤空間低”)。這個軟件還能按預期工作。
ERROR:更嚴重的問題,軟件沒能執行一些功能
CRITICAL:一個嚴重的錯誤,這表明程序本身可能無法繼續運行
這5個等級,也分別對應5種打日志的方法: debug 、info 、warning 、error 、critical。默認的是WARNING,當在WARNING或之上時才被跟蹤。
二、日志輸出:可以輸出在控制臺和文件,我選擇的是輸出在文件
StreamHandler:logging.StreamHandler;日志輸出到流,可以是sys.stderr,sys.stdout或者文件
FileHandler:logging.FileHandler;日志輸出到文件
BaseRotatingHandler:logging.handlers.BaseRotatingHandler;基本的日志回滾方式
RotatingHandler:logging.handlers.RotatingHandler;日志回滾方式,支持日志文件最大數量和日志文件回滾
日志回滾的意思為:比如日志文件是chat.log,當chat.log達到指定的大小之后,RotatingFileHandler自動把文件改名為chat.log.1。不過,如果chat.log.1已經存在,會先把chat.log.1重命名為chat.log.2。最后重新創建 chat.log,繼續輸出日志信息。【這樣保證了chat.log里面是最新的日志】
TimeRotatingHandler:logging.handlers.TimeRotatingHandler;日志回滾方式,在一定時間區域內回滾日志文件
SocketHandler:logging.handlers.SocketHandler;遠程輸出日志到TCP/IP sockets
DatagramHandler:logging.handlers.DatagramHandler;遠程輸出日志到UDP sockets
SMTPHandler:logging.handlers.SMTPHandler;遠程輸出日志到郵件地址
SysLogHandler:logging.handlers.SysLogHandler;日志輸出到syslog
NTEventLogHandler:logging.handlers.NTEventLogHandler;遠程輸出日志到Windows NT/2000/XP的事件日志
MemoryHandler:logging.handlers.MemoryHandler;日志輸出到內存中的指定buffer
HTTPHandler:logging.handlers.HTTPHandler;通過"GET"或者"POST"遠程輸出到HTTP服務器
三、日志格式說明
logging.basicConfig函數中,可以指定日志的輸出格式format,這個參數可以輸出很多有用的信息,如上例所示:
》》logging.basicConfig函數各參數:
filename: 指定日志文件名
filemode: 和file函數意義相同,指定日志文件的打開模式,'w'或'a'
format: 指定輸出的格式和內容,format可以輸出很多有用信息,如上例所示:
?%(levelno)s: 打印日志級別的數值
?%(levelname)s: 打印日志級別名稱
?%(pathname)s: 打印當前執行程序的路徑,其實就是sys.argv[0]
?%(filename)s: 打印當前執行程序名
?%(funcName)s: 打印日志的當前函數
?%(lineno)d: 打印日志的當前行號
?%(asctime)s: 打印日志的時間
?%(thread)d: 打印線程ID
?%(threadName)s: 打印線程名稱
?%(process)d: 打印進程ID
?%(message)s: 打印日志信息
datefmt: 指定時間格式,同time.strftime()
level: 設置日志級別,默認為logging.WARNING
stream: 指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略
》》logging打印信息函數:
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
?
我在工作中給的常用格式在前面已經看到了。就是:
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
這個格式可以輸出日志的打印時間,是哪個模塊輸出的,輸出的日志級別是什么,以及輸入的日志內容。
?
實例代碼:
- # 初始化日志對象
- logging.basicConfig(
- # 日志級別
- level = logging.INFO,
- # 日志格式
- # 時間、代碼所在文件名、代碼行號、日志級別名字、日志信息
- format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
- # 打印日志的時間
- datefmt = '%a, %d %b %Y %H:%M:%S',
- # 日志文件存放的目錄(目錄必須存在)及日志文件名
- filename = 'd:/report.log',
- # 打開日志文件的方式
- filemode = 'w'
- )
---------------------?
作者:echo6120?
來源:CSDN?
原文:https://blog.csdn.net/qq_30758629/article/details/80840230?
總結
以上是生活随笔為你收集整理的logging.basicConfig函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gensim的word2vec如何得出词
- 下一篇: UTF-8与UTF-8 BOM