第一篇 第二十八節 日誌logging類封裝

直接扔代碼,自己看咯,都有註釋:
1. 配置文件中,存放日誌相關信息: 等級,渠道(日誌保存在文件中還是輸出在控制檯),日誌文件名稱,測試人員信息,如下:
在這裏插入圖片描述
2. 自定義日誌類

from common.read_config import *
import logging

"""獲取日誌配置信息"""
log_set = my_config.read_data_by_one_section_name('log_set')  # 獲取測試數據文件的文件名


class MyLog:

    def __new__(cls, level, channel, logname, tester='Lujier'):
        # 創建自己的日誌收集器,my_log當作一個對象返回
        dir_path = os.path.dirname(os.path.dirname(__file__))
        log_path = os.path.join(dir_path, 'logs', logname)
        my_log = logging.getLogger(tester)
        # 創建一個日誌輸出渠道(輸出到控制檯)
        my_log.setLevel(level)  # 日誌輸出等級
        output_type = ''
        if channel == 'CONSOLE':
            output_type = logging.StreamHandler()  # 輸出到控制檯

        else:
            output_type = logging.FileHandler(log_path, encoding='UTF-8')  # 輸出到控制檯

        output_type.setLevel(level)

        # 將輸出渠道添加到日誌收集器中
        my_log.addHandler(output_type)  # 將輸出渠道添加到日誌收集器中
        my_log.addHandler(output_type)

        # 設置日誌輸出格式
        ft = '%(asctime)s-->[%(filename)s-->%(funcName)s-->line:%(lineno)d] - %(levelname)s: %(message)s'
        ft = logging.Formatter(ft)
        output_type.setFormatter(ft)
        output_type.setFormatter(ft)

        return my_log


my_log = MyLog(**log_set)  # 創建一個日誌對象

注意: ft中%各自代表含義如下:
‘’’
%(name)s:收集器名稱
%(levelno)s: 打印日誌級別的數值
%(levelname)s: 打印日誌級別名稱
%(pathname)s: 打印當前執行程序的路徑,其實就是sys.argv[0]
%(filename)s: 打印當前執行程序名
%(funcName)s: 打印日誌的當前函數
%(lineno)d: 打印日誌的當前行號
%(asctime)s: 打印日誌的時間
%(thread)d: 打印線程ID
%(threadName)s: 打印線程名稱
%(process)d: 打印進程ID
%(message)s: 打印日誌信息
“”"
工作中常用
format=’%(asctime)s - [%(filename)s–>line:%(lineno)d] - %(levelname)s: %(message)s’

此時進行日誌輸出時,如下:
在這裏插入圖片描述
運行之後,查看日誌文件:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章