首页 > 其他分享 >Pytest - 使用pytest-xdsit 插件运行后 logging 模块日志不会输出的问题

Pytest - 使用pytest-xdsit 插件运行后 logging 模块日志不会输出的问题

时间:2022-11-30 20:55:06浏览次数:53  
标签:插件 logging log handler pytest 日志 formatter logger

背景:自己写的日志打印模块,用pytest -n=auto 后日志就不会输出

# tools.set_loggging.py

import logging.handlers
import sys
from concurrent_log_handler import ConcurrentRotatingFileHandler


from config import BASE_PATH


def set_log(log_name):
    # 1. 创建日志器对象
    logger = logging.getLogger()
    # 2. 设置日志打印级别
    logger.setLevel(logging.INFO)

    # 3. 创建处理器对象
    # 输出到控制台
    st = logging.StreamHandler()

    # 输出到日志文件
    # when 是一个字符串,定义了日志切分的间隔时间单位
    # interval 是间隔时间单位的个数,指等待多少个 when 的时间后继续进行日志记录
    # backupCount 是保留日志的文件个数
    fh = logging.handlers.TimedRotatingFileHandler(BASE_PATH + '/logs/' + log_name,
                                                   when='midnight',
                                                   interval=1,
                                                   backupCount=3,
                                                   encoding='utf-8')

    # 4. 创建格式化器
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
    formatter = logging.Formatter(fmt)
    # 5. 给处理器设置格式化器
    st.setFormatter(formatter)
    fh.setFormatter(formatter)
    # 6. 给日志器添加处理器
    logger.addHandler(st)
    logger.addHandler(fh)


def set_current_log(log_name):
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    formatter = logging.Formatter("%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s")


    if not logger.handlers:  # 判断是否有handlers,有直接记录日志, 不需要创建多个句柄,否则会有日志重复打印问题
    # ConcurrentRotatingFileHandler
        rotateHandler = ConcurrentRotatingFileHandler(BASE_PATH + '/logs/' + log_name, maxBytes=512 * 1024, backupCount=10,
                                                    encoding='utf-8')
        rotateHandler.setLevel(logging.INFO)
        rotateHandler.setFormatter(formatter)
        logger.addHandler(rotateHandler)

    # stream_handler = logging.StreamHandler()
    # stream_handler.setLevel(logging.INFO)
    # stream_handler.setFormatter(formatter)
    # logger.addHandler(stream_handler)

解决办法:

脚本路径下或者项目跟路径下添加conftest.py 再初始化日志

标签:插件,logging,log,handler,pytest,日志,formatter,logger
From: https://www.cnblogs.com/czzz/p/16939712.html

相关文章

  • 油猴插件对next.js 开发的影响
    UnhandledRuntimeErrorTypeError:Cannotreadpropertiesofnull(reading'1')错误再现#1.安装nextyarnaddnext#2.配置页面pages#3.启动项目##当......
  • Eclipse加入Maven Integration for Eclipse插件后创建Maven工程
    将更改为:进入此页面此时目录结构为:加入依赖错误消失最后的目录结构为:......
  • pytest + loguru + allure 生成的报告没有log信息
    背景前段时间一直认为loguru这个库很不错,并且应用到了项目中,生成的日志文件也非常好看但是最后的allure报告中和html报告中都没有log信息。然就是各种查查:loguru作者说l......
  • IDEA使用EasyCode插件
    1、目的快速生成controller、mapper、service、serviceImpl、mappers.xml文件2、安装EasyCode插件File|Settings|Plugins搜索EasyCode,点击安装即可。3、配置模板......
  • pytest + yaml 框架 -6.hooks 钩子功能实现
    前言在发送请求的时候,我们希望在发送请求参数前,带上签名的值,或者返回的内容需要二次处理,解密后返回。此功能我们可以用hooks钩子来实现pip安装插件pipinstallpyte......
  • maven的插件
    插件plugin是绑定到生命周期,承担实际功能的组件。mvn运行时,自动关联插件来运行下图是maven默认的各阶段对应的插件列表:生命周期生命周期阶段插件目标执行任务cleanpre-clean......
  • 微慕积分商城插件
    微信小程序专业版在第一个正式版发布的时候,就推出了积分系统。用户登录小程序、签到、发表文章、评论文章、发表话题、回复话题、点赞、赞赏、付费阅读后都可以获得相应的......
  • easylogging++的那些事(四)源码分析(二)日志记录宏(四)VERBOSE日志宏
    目录CVLOG宏宏展开源码剖析CVLOG_EVERY_N宏宏展开源码剖析CVLOG_AFTER_N宏宏展开源码剖析CVLOG_N_TIMES宏宏展开源码剖析VLOG宏DCVLOG宏DVLOG宏VLOG_EVERY_N宏VLOG......
  • vue大文件上传插件
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持......
  • NOTE_pinia持久化插件的使用
    E:\song\vue_vue_learn\vite-project\index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><linkrel="icon"type="image/svg+xml"......