Appium python自動化測試系列之日誌的收集(十二)

來源:互聯網
上載者:User

標籤:ons   image   str   檔案的   png   日誌收集   log4j   目前時間   mes   

?13.1 日誌的定義13.1.1 日誌的定義

聽到日誌這個東西可能有的人莫名其妙,第一次接觸就會覺得我們為什麼要收集日誌,即使要收集日誌那麼我們需要收集哪些日誌,日誌的作用是什麼等等。

其實日誌無論是在測試、開發中都非常重要,如果你在跑自動化時程式報錯了,但是你沒有日誌你怎麼去定位時程式錯誤還是你app的錯誤?或者還是其它環境因素?

在java中有log4j這日誌模組,在python裡面我們使用的是logging這個模組,這個模組不需要你去怎麼下載安裝等等,python內建的有,你只需要拿來用就好。

13.2 日誌收集實戰13.2.1 日誌三要素

假如在測試過程中我們知道了日誌的重要性,這樣就可以了嗎?答案肯定是否定的,我們在收集日誌的過程中我們需要明白幾個事情:

一、日誌的層級

在公司員工有層級之分,這個日誌也是一樣,他也有層級之分。為什麼這麼說呢?你總不可能把測試過程中所有的日誌都收集下來吧,我管他3、7、21的都收集起來。這個肯定不行。

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

二、日誌的格式

為什麼有日誌格式呢?因為在我們偵錯工具或者看日誌的時候我們為了更好的去閱讀,或者增加日誌的可讀性,以及我們定位問題方便、快速我們需要對日誌的格式進行一些最佳化,好比我在這個日誌輸出的時候輸出時間,以及我看到這個日誌的時候我知道是哪一個類出錯了呢?

三、日誌位置

大家在寫程式的時候看日誌可能大多數人還是通過在控制台進行查看,如果說你不小心將控制台關閉了呢?以及你整合架構後你怎麼從控制台看呢?這些都不是現實的,所以在日誌中我們需要有一個位置去儲存我們的日誌,所以在搭建架構時我們都會有一個預設的日誌目錄。

13.2.2 日誌收集實戰

一、記錄檔配置

首先我們收集日誌我們要對logging模組進行一個配置,其實這個和log4j是一樣的,大家可以在官網或者其它地方查詢一下這個配置的基礎檔案,我這裡也給大家展示一個:log.conf

[loggers]keys=root,infoLogger,errorlogger  [logger_root]level=DEBUGhandlers=infohandler,errorhandler  [logger_infoLogger]handlers=infohandlerqualname=infoLoggerpropagate=0  [logger_errorlogger]handlers=errorhandlerqualname=errorloggerpropagate=0  ###############################################  [handlers]keys=infohandler,errorhandler  [handler_infohandler]class=StreamHandlerlevel=INFOformatter=form02args=(sys.stdout,)  [handler_errorhandler]class=FileHandlerlevel=ERRORformatter=form01args=(‘../logs/mylog.log‘, ‘a‘)  ###############################################  [formatters]keys=form01,form02  [formatter_form01]format=%(asctime)s %(filename)s %(levelname)s  %(message)sdatefmt=%Y-%m-%d %H:%M:%S  [formatter_form02]format=%(asctime)s %(filename)s %(levelname)s  %(message)sdatefmt=%Y-%m-%d %H:%M:%S

 這個設定檔每個人配置的都不一樣,但是大體功能都差不多,這個只需要根據自己的愛好去定義就行,下面我把配置定義的方法貼出來大家看一下:

1. 初始化 logger = logging.getLogger("endlesscode"),getLogger()方法後面最好加上所要日誌記錄的模組名字,後面的日誌格式中的%(name)s 對應的是這裡的模組名字2. 順位 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL這幾種層級,日誌會記錄順位以上的日誌3. Handler,常用的是StreamHandler和FileHandler,windows下你可以簡單理解為一個是console和檔案日誌,一個列印在CMD視窗上,一個記錄在一個檔案上4. formatter,定義了最終log資訊的順序,結構和內容,我喜歡用這樣的格式 ‘[%(asctime)s] [%(levelname)s] %(message)s‘, ‘%Y-%m-%d %H:%M:%S‘,%(name)s Logger的名字%(levelname)s 文本形式的記錄層級%(message)s 使用者輸出的訊息%(asctime)s 字串形式的目前時間。預設格式是 “2003-07-08 16:49:45,896”。逗號後面的是毫秒%(levelno)s 數字形式的記錄層級%(pathname)s 調用日誌輸出函數的模組的完整路徑名,可能沒有%(filename)s 調用日誌輸出函數的模組的檔案名稱%(module)s  調用日誌輸出函數的模組名%(funcName)s 調用日誌輸出函數的函數名%(lineno)d 調用日誌輸出函數的語句所在的程式碼%(created)f 目前時間,用UNIX標準的表示時間的浮 點數表示%(relativeCreated)d 輸出日誌資訊時的,自Logger建立以 來的毫秒數%(thread)d 線程ID。可能沒有%(threadName)s 線程名。可能沒有%(process)d 進程ID。可能沒有

  

其實大家只需要按照我上面的配置就好,這裡需要提點的一下是,在設定檔裡面你需要配置一下日誌的輸出檔案,如果你沒有這個檔案,系統會報錯,“args=(‘../logs/mylog.log‘, ‘a‘)” 這一句大家根據自己的情況變更。

當我們把所有的設定檔配置好了之後我們只需要在我們需要用到的地方去引入就好,看下面的代碼:

#coding=utf-8import loggingimport logging.config#這個是設定檔的路徑CONF_LOG = "../Config/log.conf"logging.config.fileConfig(CONF_LOG)logger = logging.getLogger()#下面就是使用日誌列印日誌資訊logger.info("info類型的日誌")logger.error("error 的日誌")

  通過上面的配置以及輸出最後的結果如:

 

通過這個圖片我們能夠看到我們有輸出的日誌時間、以及類的名字、以及等級。是不是很方便?動手吧。

備忘:我這裡把錯誤的日誌在logs檔案下的mylog.log檔案也進行了儲存,因為我們在看線上錯誤記錄檔時大多數只看錯誤的日誌,所以只將錯誤的日誌進行了儲存,如果其它類型的需要儲存,那麼你就按照類似格式在info等配置下也把目錄配置進去即可。

 

 

Appium python自動化測試系列之日誌的收集(十二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.