Selenium3+python自動化012+日志logging基本用法、高級用法


1.關鍵字:

  login 登錄
  log 日志
  logging python日志模塊

2.什么叫日志:

日志用來記錄用戶行為或者代碼的執行過程

3.日志使用的地方:
  1.排錯的時候需要打印很多細節來幫助排錯
  2.有一些用戶行為,有沒有錯都要記錄下來(后台)
  3.嚴重的錯誤記錄下來

4.logging模塊的日志級別,總開關小於分開發以總開關為准,總開關大於分開關以分開關為准。

 

兩種書寫格式:

格式一:

格式二:

 

 日志輸出

 

上面列表中的日志等級是從上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR < CRITICAL,而日志的信息量是依次減少的;

 

問題:

問題1:為什么前面兩條日志沒有被打印出來?

  這是因為logging模塊提供的日志記錄函數所使用的日志器設置的日志級別是WARNING,因此只有WARNING級別的日志記錄以及大於它的ERROR和CRITICAL級別的日志記錄被輸出了,而小於它的DEBUG和INFO級別的日志記錄被丟棄了。

問題2:默認打印出來的日志信息中各字段表示什么意思?為什么會這樣輸出?

 上面輸出結果中每行日志記錄的各個字段含義分別是:日志級別:日志器名稱:日志內容

問題3:怎么修改logging這些默認設置呢?

  其實很簡單,在我們調用上面這些日志記錄函數之前,手動調用一下basicConfig()方法,把我們想設置的內容以參數的形式傳遞進去就可以了。

 

5. logging.basicConfig()函數

該方法用於為logging日志系統做一些基本配置語法:logging.basicConfig(**kwargs)

實例2:

 

 

第一個例子,默認級別為warning

 

第二個例子,設置日志級別

 

第三個例子,輸出日志格式化

 

第四個例子,輸出到文件

 

 有了filename參數就不會直接輸出到控制台,而是寫入文件,如下圖

 

 

第五個例子,輸出到文件(二)

 

 

 

第六個例子,寫入到文件,同時將錯誤信息輸出到控制台

 

 

 

 logging模塊講解

 1 import logging  2 import time  3 import os  4 
 5 class LoggingMethod():  6     # 創建方法
 7     def getlogger(self):  8         logger = logging.getLogger()  9         logger.setLevel(logging.INFO)# Log等級總開關
10 
11         now=time.strftime('%Y-%m-%d_%H_%M_%S') 12         filename=os.path.dirname(os.path.abspath('.')) + '\\log\\' + now + '.log'
13         # 創建一個handler,用於寫入日志文件
14         fh = logging.FileHandler(filename)#mode='a'默認以追加的形式寫入文件,如果想清空重寫用“mode='w'”
15         fh.setLevel(logging.INFO)  # 輸出到file的log等級的開關
16 
17         # 定義handler的輸出格式
18         formatter = logging.Formatter("%(asctime)s - %(name)s-%(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") 19 
20  fh.setFormatter(formatter) 21         # 將FileHandler對象添加到handler里面
22  logger.addHandler(fh) 23 
24         return logger 25 
26 if __name__=='__main__': 27     logger=LoggingMethod().getlogger() 28 
29     # 日志
30     logger.debug('debug message') 31     logger.info('info message') 32     logger.warning('warning message') 33     logger.error('error message') 34     logger.critical('critical message')
LoggingMethod

 設置log路徑

 

 

 

 1 import logging  2 import time  3 import os  4 
 5 # 同一天的所有日志輸入到同一個log文件
 6 class LoggingMethod():  7     def getlogger(self):  8         # 設置存儲日志的文件名
 9         now = time.strftime('%Y-%m-%d') 10         filename = os.path.dirname(os.path.abspath('.')) + '\\log\\' + now + '.log'
11         err_filename=os.path.dirname(os.path.abspath('.')) + '\\log\\' + now+'-error' + '-' + '.log'
12         # 第一步,創建一個logger
13         logger = logging.getLogger()#實例化logger對象
14         logger.setLevel(logging.DEBUG)  # Log等級總開關
15         # 第二步,創建一個handler,用於寫入所有日志
16         fh1 = logging.FileHandler(filename,encoding='utf-8') 17         fh1.setLevel(logging.DEBUG)  # 輸出到file的log等級的開關
18         # 創建一個handler,用於寫入錯誤日志
19         fh2 = logging.FileHandler(err_filename,encoding='utf-8') 20         fh2.setLevel(logging.WARNING)  # 輸出到file的log等級的開關
21         # 第三步,定義handler的輸出格式
22         formatter = logging.Formatter('%(asctime)s - %(levelname)s -%(pathname)s-%(lineno)d'+''+'- %(message)s') 23  fh1.setFormatter(formatter) 24  fh2.setFormatter(formatter) 25         # 第四步,將handlers 添加到 logger
26  logger.addHandler(fh1) 27  logger.addHandler(fh2) 28 
29         return logger 30 if __name__=='__main__': 31     logger = LoggingMethod().getlogger() 32     logger.info('測試info日志') 33     logger.error('error')
日志輸入到文件和控制台

 

 

 

 

 


免責聲明!

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



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