中級篇之8-Python自定義封裝一個簡單的Log類
本文介紹如何寫一個Python日誌類,用來輸出不同級別的日誌信息到本地文件夾下的日誌文件里。為什麼需要日誌輸出呢,我們需要記錄我們測試腳本到底做了什麼事情,最好的辦法是寫事件監聽。這個事件監聽,對我們現在來說,還是有點複雜去理解,所以我這裡,選擇封裝一個簡單的日誌類,同樣達到這個效果。我們大概需要如下日誌輸出效果:
問題分析:我們需要封裝一個簡單的日誌類,主要有以下內容:1. 生成的日誌文件格式是 年月日時分秒.log2. 生成的xxx.log文件存儲在項目根目錄下Logs文件夾下3. 這個日誌類,支持INFO,ERROR兩種日誌級別4. 日誌里,每行日誌輸出,如上圖,時間日期+執行類名稱+日誌級別+日誌描述解決問題思路:1. 在根目錄下新建一個Logs的文件夾,如何獲取這個Log的相對路徑,前面介紹過。2. 日誌的保存命名,需要系統時間,前面也介紹過時間格式化輸出3. Python中有一個logging模塊來支持我們自定義封裝一個新日誌類。4. 在腳本里,初始化一個日誌類的實例對象,然後去控制輸出INFO還是ERROR日誌信息。自定義日誌類封裝如下:logger.py,新建在test包下
# _*_ coding: utf-8 _*_
import logging
import os.path
import time
class Logger(object):
def __init__(self, logger):
"""
指定保存日誌的文件路徑,日誌級別,以及調用文件
將日誌存入到指定的文件中
:param logger:
"""
# 創建一個logger
self.logger = logging.getLogger(logger)
# 創建一個handler,用於寫入日誌文件
rq = time.strftime("%Y%m%d%H%M", time.localtime(time.time()))
log_path = os.path.dirname(os.getcwd()) + "/Logs/"
log_name = log_path + rq + ".log"
fh = logging.FileHandler(log_name)
fh.setLevel(logging.INFO)
# 再創建一個handler,用於輸出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# 定義handler的輸出格式
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 給logger添加handler
def getlog(self):
return self.logger
新寫一個測試日誌類,相關代碼如下:
# coding=utf-8
import time
from selenium import webdriver
from test.logger import Logger
mylogger = Logger(logger="TestMyLog").getlog()
class TestMyLog(object):
def print_log(self):
driver = webdriver.Chrome()
mylogger.info("打開瀏覽器")
driver.maximize_window()
mylogger.info("最大化瀏覽器窗口。")
driver.implicitly_wait(8)
driver.get("https://www.baidu.com")
mylogger.info("打開百度首頁。")
time.sleep(1)
mylogger.info("暫停一秒。")
driver.quit()
mylogger.info("關閉並退出瀏覽器。")
testlog = TestMyLog()
testlog.print_log()
在PyCharm里運行下這個測試類,會在根目錄下的Logs文件下,新建一個日誌文件,打開效果如文章開頭的日誌輸出圖。好了,關於自定義封裝log類,自己好好去讀下代碼,理解下每行代碼的意思,日誌類的封裝和調用就介紹到這裡。
歡迎關注凱哥公眾號 :凱哥Java
※Selenium中級篇之7-Python中字元串切割操作
※中級篇之6-Python獲取系統時間和格式化時間顯示
※25行Python 代碼就能實現人臉識別?這篇文章告訴你詳情
※一文詳解神經網路 BP 演算法原理及 Python 實現
※純乾貨-超級實用的python小技巧
TAG:Python |
※Coach Sun英語中級課程
※Topik中級辭彙:甜品篇
※HALCON中級篇:條碼識別
※給中級Python開發者的13個練手項目,適合你不?
※明基CinematicColor中級工程師認證課程 將專業帶入家庭
※中級班主 Repose推賓士E320排氣
※法式料理中級 Le?on 12
※中級忍術進化 | 2019款Kawasaki ZX-6R或於10月登場
※來稿 | 石家萍舞蹈學校 JPS 舞蹈團 贏得 Showstopper 舞蹈大賽中級組最高獎項
※此車不火 我看不妥!中級距復古街車—Vitpilen 701
※一汽-大眾SUV首發 新T-ROC/中級SUV實拍
※雪鐵龍2年內推3款新車 國產C3 AIRCROSS跨界中級車新C3-XR
※漢蘭達/銳界嚇出一身冷汗!Jeep全新中級SUV二季度國產上市
※鍾馗一級該幹嘛?低級:清線,中級:鉤藍buff,頂級:都學著點
※TOPIK考試直通車!初級、中級任選限時優惠299!
※韓語零基礎自學3個月過中級,半年過TOPIK高級
※TOPIK可以直接考中級嗎?還是從初級一級一級考?
※5 個瑜伽動作考驗核心力量,入門級,中級,高級,你Get到幾個?
※資源 | 26份機器學習視頻資源,涵蓋入門->中級->項目的各個階段!(可直接下載......)
※最後3天!TOPIK中級簽約升級班7折優惠