日志处理

日志等级的分类:

  DEBUG

  INFO

  WARNING

  ERROR

  CRITICAL

 

import logging
import os
import time

from common.tools import get_project_path, sep


def get_log(logger_name):
    """
    Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,
    然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作
    :param logger_name:
    :return:
    """
    # 创建一个logger
    logger = logging.getLogger(logger_name)
    logger.setLevel(logging.INFO)

    # 设置日志存放路径,日志文件名
    all_log_path = get_project_path() + sep(['logs', 'all_logs'], add_sep_before=True, add_sep_after=True)
    if not os.path.exists(all_log_path):
        os.makedirs(all_log_path)

    # 获取本地时间
    time_ = time.time()
    print(time_)        # 获取时间戳
    print(time.localtime(time_))    # 获取年月日时分秒等格式的时间数据
    # rq要作为文件名,但是命名不能有:,所以未采取'%Y-%m-%d %H:%M:%S'形式
    rq = time.strftime('%Y%m%d_%H%M', time.localtime(time_))
    print(rq)
    # 设置日志文件名
    all_log_name = all_log_path + rq + '.log'
    print(all_log_name)

    # 创建handler:写入所有日志
    fh = logging.FileHandler(all_log_name)
    fh.setLevel(logging.INFO)

    # 定义日志的输出格式
    all_log_formatter = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(lineno)d - %(levelname)s - %(message)s',
                                          datefmt='%Y-%m-%d %H:%M:%S')
    # 将定义好的输出形式添加到handler
    fh.setFormatter(all_log_formatter)

    # 给logger添加handler
    logger.addHandler(fh)
    return logger


log = get_log('自动化测试')

if __name__ == '__main__':
    log.debug('I am a debug message')
    log.info('I am a info message')
    log.warning('I am a warning message')
    log.error('I am a error message')
    log.critical('I am a critical message')

 

posted @ 2023-03-19 00:14  雪儿来  阅读(29)  评论(0编辑  收藏  举报