appium第五章 日誌管理

2021-09-24 11:44:33 字數 4121 閱讀 5037

日誌**實現

指令碼執行會有很多的情況,比如除錯資訊、報錯異常資訊等。日誌要根據這些不同的情況來繼續分級管理,不然對於排查問題的篩選會有比較大的干擾。 。日誌一般定位的級別如下:

級別何時使用

debug

除錯資訊,也是最詳細的日誌資訊。

info

證明事情按預期工作。

warning

表明發生了一些意外,或者不久的將來會發生問題(如『磁碟滿了』)。軟體還是在正常工作。

error

由於更嚴重的問題,軟體已不能執行一些功能了。

critical

嚴重錯誤,表明軟體已不能繼續執行了。

首先我們日誌需要按照info、debug、error等級別來進行區分的。當然這個級別可以自己去設定。在一般的情況下我們普通的輸出我們直接用info型別,除錯的時候用debug型別,如果預計有錯誤時那麼我們就需要用error型別的日誌,一般情況去info級別最為合適。

日誌格式化是為了提高日誌的可閱讀性,比如:時間+模組+行數+日誌具體資訊 的內容格式。如果日誌資訊雜亂無章的全部輸出來,這樣也不利於定位問題。如下所示就是日誌格式化輸出,非常便於閱讀檢視。

2018-01-10 18:02:35,633 backup.py[line:18] info test backup

====

2018-01-10 18:02:39,253 backup.py[line:20] info click backup button

2018-01-10 18:02:54,025 backup.py[line:23] info click next button

乙個專案中會有很多的日誌採集點,而日誌採集點必須結合業務屬性來設定。比如在登入**執行前可以插入「準備登入…」日誌資訊,如果登入完成之後,再設定登入的提示日誌就會給人造成誤解,無法判斷到底是登入之前的問題還是登入之後的問題,因此日誌採集點的位置很重要。

python的logging模組提供了通用的日誌系統,這個模組提供不同的日誌級別,並可以採用不同的方式記錄日誌,比如檔案,http get/post,smtp,socket等,甚至可以自己實現方式記錄日誌

logger 記錄器,用於設定日誌採集。

basicconfig(**kwargs) 為日誌記錄系統做基本配置。引數分別是:handler 處理器、filter 過濾器、formatter 格式化器

handler 處理器,將日誌記錄傳送至合適的路徑。

引數:filename 指定日誌檔名稱

引數:filemode 指定開啟檔案的模式,如果指定了filename(如果檔案模式未指定,則預設為』a)

tips:檔案讀寫模式

1) w 以寫方式開啟,

2)w 檔案若存在,首先要清空,然後(重新)建立

3) a 以追加模式開啟 (從 eof 開始, 必要時建立新檔案)

4) r+ 以讀寫模式開啟

5) w+ 以讀寫模式開啟 (參見 w )

6) a+ 以讀寫模式開啟 (參見 a )

filter 過濾器,提供了更好的粒度控制,它可以決定輸出哪些日誌記錄。

引數:level 將根記錄器級別設定為指定級別。

formatter 格式化器,指明了最終輸出中日誌的格式。

引數:format 為處理程式使用指定的格式字串 格式

描述%(levelno)s

列印日誌級別的數值

%(levelname)s

列印日誌級別名稱

%(pathname)s

列印當前執行程式的路徑

%(filename)s

列印當前執行程式名稱

%(funcname)s

列印日誌的當前函式

%(lineno)d

列印日誌的當前行號

%(asctime)s

%(thread)d

列印執行緒id

%(threadname)s

列印執行緒名稱

%(process)d

列印程序id

%(message)s

列印日誌資訊

使用方法:

logging.basicconfig(filename=『runlog.log』,level=logging.debug,format=』%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s』)

輸出結果:

2018-04-19 17:25:04,679 logging_test.py[line:12] debug debug info

2018-04-19 17:25:04,680 logging_test.py[line:13] info hello 51zxw 2020

2018-04-19 17:25:04,680 logging_test.py[line:14] warning waning info

將log輸出格式,輸出路徑等引數抽離出來作為乙個配置表,可以直接呼叫,如下所示:

名稱log.conf

[loggers]               #建立記錄器

keys=root,infologger #乙個預設記錄器、乙個定義為infologger記錄區

[logger_root] #預設記錄器

level=debug #過濾的級別

handlers=consolehandler,filehandler #配置:控制台的輸出和檔案的輸出

[logger_infologger] #定義為infologger記錄區

handlers=consolehandler,filehandler #配置:輸出的控制台和輸出的檔案

qualname=infologger #日誌的引用名稱

#等於0:表示輸入日誌,訊息不傳遞。等於1:表示輸入日誌,訊息往更高階別傳遞,root最高

propagate=0

[handlers] #控制台

keys=consolehandler,filehandler # 控制台的輸出和檔案的輸出

[handler_consolehandler] # 輸出的控制台

class=streamhandler # 型別:檔案流的物件

level=info #過濾級別

formatter=form02 #輸出格式

args=(sys.stdout,) #標註流輸出

[handler_filehandler]

class=filehandler

level=info

formatter=form01

args=('runlog.log', 'a') #輸出檔案路徑,現在為當前路徑

[formatters] #建立檔案格式

keys=form01,form02 #建立的兩個格式

[formatter_form01]

format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

[formatter_form02]

format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

在需要呼叫的模組增加如下**:

import logging

import logging.config

con_log='log.conf'

logging.config.fileconfig(con_log)

logging=logging.getlogger()

desired_caps =

driver = webdriver.remote('', desired_caps)

logging.info('開始測試了!')

注意:該放在作用是從configparser格式的檔案中讀取日誌配置,同時如果當前指令碼有配置log引數,則覆蓋當前log配置選項。

第五章 薪酬管理

1.答 1 根據員工定級 入級規定,根據崗位評價結果或能力評價目結果或績效考核結果給員工入級 2 按照新的工資獎金方案確定每個員工的崗位工資 能力工資 獎金 3 如果出現某員工薪酬等級降低,原來的工資水平高於調整後的工資方案,根據過渡辦法中的有關規定,一般是本著維持工資水平不下降的原則,維持原有的工...

python第五章 Python學習(第五章)

記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...

第五章 雜湊

雜湊表adt,只支援二叉樹查詢所允許的一部分操作。比如插入,刪除,查詢等。那些需要元素間排序資訊的操作將不會得到支援。比如findmin,findmax和線性時間按排序順序列印整個表的操作時不支援的。雜湊函式在理想狀態是能將任何兩個不同的關鍵字對映到不同的單元,但是這是不可能,因為關鍵字是無窮的,但...