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'

這個格式可以輸出日志的打印時間,是哪個模塊輸出的,輸出的日志級別是什么,以及輸入的日志內容。

 

實例代碼:

  1.  
    # 初始化日志對象
  2.  
    logging.basicConfig(
  3.  
        # 日志級別
  4.  
        level = logging.INFO,
  5.  
        # 日志格式
  6.  
        # 時間、代碼所在文件名、代碼行號、日志級別名字、日志信息
  7.  
        format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
  8.  
        # 打印日志的時間
  9.  
        datefmt = '%a, %d %b %Y %H:%M:%S',
  10.  
        # 日志文件存放的目錄(目錄必須存在)及日志文件名
  11.  
        filename = 'd:/report.log',
  12.  
        # 打開日志文件的方式
  13.  
        filemode = 'w'
  14.  
    )

--------------------- 
作者:echo6120 
來源:CSDN 
原文:https://blog.csdn.net/qq_30758629/article/details/80840230 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM