Python如何写日志文件

改目录
加testcase
加common,存放log

6/写日志

log.py
import logging
import os
import time

class LoggingUtil():

    def __init__(self, logger=None):
        # 创建一个logger
        self.logger = logging.getLogger(logger)
        level = 'INFO'
        if level == 'DEBUG' or level == 'debug':
            self.setLev = logging.DEBUG
        elif level == 'INFO' or level == 'info':
            self.setLev = logging.INFO
        elif level == 'WARN' or level == 'warn' or level == 'warning' or level == 'WARNING':
            self.setLev = logging.WARN
        elif level == 'ERROR' or level == 'error':
            self.setLev = logging.ERROR
        self.logger.setLevel(self.setLev)

        self.log_time = time.strftime("%Y-%m-%d_%H-%M-%S")
        self.path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
        self.log_path = os.path.join(self.path, 'logs')
        # self.log_name = self.log_path + "\\" +"tianchi_"+self.log_time + '.log'
        self.log_name = os.path.join(self.log_path, "ui_" + self.log_time + '.log')

        # 创建一个handler用于写入日志文件
        fh = logging.FileHandler(self.log_name, 'a', encoding='utf-8')  # a的意思是追加,防止每次都覆盖了
        fh.setLevel(self.setLev)

        # 再创建一个handler,用于输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(self.setLev)

        # 定义handler的输出格式
        formatter = logging.Formatter(
            '[%(asctime)s] %(filename)s-> line:%(lineno)d [%(levelname)s]-->%(message)s')
        # formatter = logging.Formatter(
        #     '[%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s]-->%(message)s')
        fh.setFormatter(formatter)
        ch.setFormatter(formatter)

        # 给logger添加handler
        self.logger.addHandler(fh)
        self.logger.addHandler(ch)

        fh.close()
        ch.close()

    def get_logger(self):
        return self.logger

LogUtils = LoggingUtil().get_logger()

if __name__ == '__main__':
    LogUtils = LoggingUtil().get_logger()
    res1 = {"code": 1, "message": "贺喜你,登录成功"}
    LogUtils.info(res1)
    res2 = {"code": 0, "message": "登录失败"}
    if res2['code'] == 0:
        LogUtils.info("登录失败")
        LogUtils.debug("登录失败")
        LogUtils.warning("登录失败")
conftest.py


import logging
import pytest
from selenium import webdriver
from common.log import LogUtils
from settings import ENV

@pytest.fixture(scope="class")
def login():
    driver = webdriver.Chrome()
    LogUtils.info("打开浏览器")
    driver.get(ENV.url)
    LogUtils.info("打开网页")
    driver.maximize_window()  # 最大化
    driver.implicitly_wait(10)  # 隐式等待
    yield driver
    driver.quit()# 关闭浏览器
    LogUtils.info("关闭浏览器")

你可能感兴趣的:(python,开发语言)