當前位置:
首頁 > 知識 > 中級篇之8-Python自定義封裝一個簡單的Log類

中級篇之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


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

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折優惠