当前位置: 首页 > article >正文

yaml配置文件D19

1)yaml配置

2)yaml封装

3)logging封装配合yaml配置文件

附带代码:

import yaml
from yaml import SafeLoader


def read_yaml(file):
    with open(file, "r") as f:
        config = yaml.load(f, Loader=SafeLoader)
        return config


def write_yaml(file, data):
    with open(file, "a") as f:
        yaml.dump(data, f)


if __name__ == '__main__':
    print(read_yaml("config.yaml"))
    write_yaml("config.yaml", {"code": "18"} )

import logging

from common.yaml_handler import read_yaml

config = read_yaml("config.yaml")
logger_config = config["logger"]


def get_logger(
        name=logger_config["name"],
        file=logger_config["file"],
        logger_level=logger_config["logger_level"],
        stream_level=logger_config["stream_level"],
        file_level=logger_config["file_level"],
        fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s"
):
    logger = logging.getLogger(name)
    logger.setLevel(logger_level)

    stream_logger = logging.StreamHandler()
    stream_logger.setLevel(stream_level)
    logger.addHandler(stream_logger)

    fmt = logging.Formatter(fmt)
    stream_logger.setFormatter(fmt)

    if file:
        file_logger = logging.FileHandler(file)
        file_logger.setLevel(file_level)
        logger.addHandler(file_logger)
        file_logger.setFormatter(fmt)

    return logger


if __name__ == '__main__':
    logger = get_logger()
    logger.debug("hello,python")
    logger.warning("hi,world!")

作业:

自动化测试框架搭建
请根据模块分层思想搭建自动化框架结构

公共的方法目录:common
测试用例类模块目录:testcases
测试数据目录:data
测试报告存放目录:reports
存放一些下载第三方的模块:library
配置文件存放目录:conf
日志文件存放的目录:logs
项目的启动文件:run_test.py
分别测试每个模块是否可以使用。
(有精力的同学可以尝试自己先调通模块之间的调用,不需要提交)

上期答案:

"""
logging 模块封装
对 logging 日志处理进行封装。使用 2 种方法:
方法一: 函数封装 def get_logger()
方法二: 类封装 class LoggerHander(logging.Logger)

提示:得到收集器 logger 可以用 super()__init__ 哦!
"""
# 掌握把日志封装成函数方法即可
import logging


def get_logger(
        name=None,
        file=None,
        logger_level="DEBUG",
        stream_level="DEBUG",
        file_level="INFO",
        fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s"
):
    # 设置日志收集器
    logger = logging.getLogger(name)
    logger.setLevel(logger_level)

    # 设置日志处理器 流处理器
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(stream_level)
    logger.addHandler(stream_handler)

    fmt = logging.Formatter(fmt)
    stream_handler.setFormatter(fmt)

    if file:
        file_handler = logging.FileHandler(file, encoding="utf-8")
        file_handler.setLevel(file_level)
        logger.addHandler(file_handler)
        file_handler.setFormatter(fmt)

    return logger


# class LoggerHandler:
#     def __init__(
#             self,
#             name=None,
#             file=None,
#             logger_level="DEBUG",
#             stream_level="DEBUG",
#             file_level="INFO",
#             fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s"
#     ):
#         # 设置日志收集器
#         logger = logging.getLogger(name)
#         # 设置日志收集器level
#         logger.setLevel(logger_level)
#
#         # 设置日志处理器 流处理器
#         stream_handler = logging.StreamHandler()
#         # 设置日志处理器level
#         stream_handler.setLevel(stream_level)
#
#         logger.addHandler(stream_handler)
#
#         fmt = logging.Formatter(fmt)
#
#         stream_handler.setFormatter(fmt)
#
#         if file:
#             file_handler = logging.FileHandler(file, encoding="utf-8")
#             file_handler.setLevel(file_level)
#             logger.addHandler(file_handler)
#             file_handler.setFormatter(fmt)
#
#         self.logger = logger
#
#
# class LoggerHandler2(logging.Logger):
#     def __init__(
#             self,
#             name=None,
#             file=None,
#             logger_level="DEBUG",
#             stream_level="DEBUG",
#             file_level="INFO",
#             fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s"
#     ):
#         super().__init__(name, logger_level)
#
#         self.setLevel(logger_level)
#         stream_handler = logging.StreamHandler()
#         stream_handler.setLevel(stream_level)
#
#         self.addHandler(stream_handler)
#
#         fmt = logging.Formatter(fmt)
#         stream_handler.setFormatter(fmt)
#
#         if file:
#             file_handler = logging.FileHandler(file, encoding="utf-8")
#             file_handler.setLevel(file_level)
#             self.addHandler(file_handler)
#             file_handler.setFormatter(fmt)


if __name__ == '__main__':
    logger = get_logger(file="log.txt")
    logger.debug("hello")
    logger.info("hello python")
    logger.warning("hello world")
    logger.error("hi")
    logger.critical("hi python")

http://www.kler.cn/news/272947.html

相关文章:

  • 【MyBatis-Plus】逻辑删除、乐观锁、防全表更新和删除实现 MyBatisX插件 高级扩展
  • VMD + CEEMDAN 二次分解,CNN-Transformer预测模型
  • Cookie与Session
  • 水电站防水淹厂房视频、报警系统解决方案
  • mac安装rust环境
  • 实现C++自定义的String类
  • 47.全排列II
  • Java微服务分布式事务框架seata
  • 【Mysql事务】
  • 用python如何实现智能合约?如何使用remix编写solidity智能合约并部署上链
  • 【how2j练习题】HTML部分综合练习
  • (二十五)Flask之MTVMVC架构模式Demo【重点:原生session使用及易错点!】
  • 消息队列面试题
  • 2024西工大数据结构理论上机作业(头歌 C)持续更新中~
  • 寻找可能认识的人
  • 安卓面试网络知识基础 1-5
  • ​LeetCode解法汇总303. 区域和检索 - 数组不可变
  • 【已解决】MySQL:常用的除法运算+精度处理+除数为0处理
  • 强化PaaS平台应用安全:关键策略与措施
  • C++ 11:基于范围的 for 循环