Python基礎之logging日誌模組封裝

2022-06-05 19:30:13 字數 3931 閱讀 1007

使用python做自動化測試的時候,對於關鍵資訊輸出和記錄是必要的,方便除錯和記錄查詢。python有個logging模組,我們簡單對其進行封裝。

話不多說,流程圖已經畫,自己領會。

封裝log方法

"""import os

import time

import logging.handlers

# 日誌列印等級

levels =

# 建立乙個日誌

logger = logging.getlogger()

level = 'default'

# 建立日誌檔案方法

def create_file(filename):

path = filename[0:filename.rfind('/')]

if not os.path.isdir(path):

os.makedirs(path)

if not os.path.isfile(filename):

fd = open(filename, mode='w', encoding='utf-8')

fd.close()

else:

pass

# 給logger新增handler 新增內容到日誌控制代碼中

def set_handler(levels):

if levels == 'error':

logger.addhandler(mylog.err_handler)

logger.addhandler(mylog.handler)

# 在記錄日誌之後移除控制代碼

def remove_handler(levels):

if levels == 'error':

logger.removehandler(mylog.err_handler)

logger.removehandler(mylog.handler)

def get_current_time():

return time.strftime(mylog.date, time.localtime(time.time()))

class mylog:

path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

log_file = path+'/log/log.log'

err_file = path+'/log/err.log'

logger.setlevel(levels.get(level, logging.notset))

create_file(log_file)

create_file(err_file)

date = '%y-%m-%d %h:%m:%s'

# 建立乙個handler,用於寫入日誌檔案

handler = logging.filehandler(log_file, encoding='utf-8')

err_handler = logging.filehandler(err_file, encoding='utf-8')

@staticmethod

def debug(log_meg):

set_handler('debug')

# 檔案中輸出模式

logger.debug("[debug " + get_current_time() + "]" + log_meg)

remove_handler('debug')

@staticmethod

def info(log_meg):

set_handler('info')

logger.info("[info " + get_current_time() + "]" + log_meg)

remove_handler('info')

@staticmethod

def warning(log_meg):

set_handler('warning')

logger.warning("[warning " + get_current_time() + "]" + log_meg)

remove_handler('warning')

@staticmethod

def error(log_meg):

set_handler('error')

logger.error("[error " + get_current_time() + "]" + log_meg)

remove_handler('error')

@staticmethod

def critical(log_meg):

set_handler('critical')

logger.error("[critical " + get_current_time() + "]" + log_meg)

remove_handler('critical')

# 設定控制台輸出格式

formatter = logging.formatter(

'[%(asctime)s] [%(levelname)s] %(message)s', '%y-%m-%d %h:%m:%s')

# 再建立乙個handler,用於輸出到控制台

console = logging.streamhandler()

console.setformatter(formatter)

logger.addhandler(console)

console.setlevel(logging.notset)

if __name__ == "__main__":

mylog.debug("this is debug message")

mylog.info("this is info message")

mylog.warning("this is warning message")

mylog.error("this is error")

mylog.critical("this is critical message")

執行結果

[2020-05-23 20:41:10] [debug] [debug 2020-05-23 20:41:10]this is debug message

[2020-05-23 20:41:10] [info] [info 2020-05-23 20:41:10]this is info message

[2020-05-23 20:41:10] [warning] [warning 2020-05-23 20:41:10]this is warning message

[2020-05-23 20:41:10] [error] [error 2020-05-23 20:41:10]this is error

[2020-05-23 20:41:10] [error] [critical 2020-05-23 20:41:10]this is critical message

process finished with exit code 0

檔案結構:

檔案內容:

以上就是python日誌的簡單封裝,基本上滿足日常的需求。

另外,對測試開發,自動化測試技術與思想感興趣的朋友,可以加入qq測開***:696400122進行交流,互相學習與進步。不積跬步無以至千里!

記憶碎片之scrapy中使用logging模快

settings.py log level warning 設定日誌顯示的等級 log file a.log 設定日誌儲存的位置,設定後介面不會顯示日誌內容 spider.py import logging import logging logging.basicconfig函式各引數 filena...

詳解Python中的日誌模組logging

許多應用程式中都會有日誌模組,用於記錄系統在執行過程中的一些關鍵資訊,以便於對系統的執行狀況進行跟蹤。在.net平台中,有非常著名的第三方開源日誌元件log4net,c 中,有人們熟悉的log4cpp,而在python中,我們不需要第三方的日誌元件,因為它已經為我們提供了簡單易用 且功能強大的日誌模...

python基礎之語句 Python基礎之條件語句

我們在程式設計中經常需要通過檢查某個條件,從而決定去做什麼。條件語句就是針對這一情景應用的。本篇主要介紹 if 和 while。一 if語句 先來個總覽 if 條件一 條件一對應的 塊 elif 條件二 條件一對應的 塊 else 不滿足條件一和條件二對應的 塊 if 語句的核心就是值為true 或...