zoukankan      html  css  js  c++  java
  • Selenium+unittest(3)日志模块

     

    日志用的是logging模块,用到的配置如下

    log:
        file_name: test.log
        backup: 10
        console_level: INFO
        file_level: INFO
        pattern: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

    log.py如下

    """
    日志类。通过读取配置文件,定义日志级别、日志文件名、日志格式等。
    一般直接把logger import进去
    from utils.log import logger
    logger.info('test log')
    """
    import os
    import logging
    from logging.handlers import TimedRotatingFileHandler
    from src.config.config import LOG_PATH, RunConfig
    
    
    class Logger(object):
        def __init__(self, logger_name='selenium'):
            self.logger = logging.getLogger(logger_name)
            logging.root.setLevel(logging.NOTSET)
            c = RunConfig.log
            self.log_file_name = c.get('file_name') if c and c.get('file_name') else 'test.log'  # 日志文件
            self.backup_count = c.get('backup') if c and c.get('backup') else 5  # 保留的日志数量
            # 日志输出级别
            self.console_output_level = c.get('console_level') if c and c.get('console_level') else 'WARNING'
            self.file_output_level = c.get('file_level') if c and c.get('file_level') else 'DEBUG'
            # 日志输出格式
            pattern = c.get('pattern') if c and c.get('pattern') else '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
            self.formatter = logging.Formatter(pattern)
    
        def get_logger(self):
            """在logger中添加日志句柄并返回,如果logger已有句柄,则直接返回
            我们这里添加两个句柄,一个输出日志到控制台,另一个输出到日志文件。
            两个句柄的日志级别不同,在配置文件中可设置。
            """
            if not self.logger.handlers:  # 避免重复日志
                console_handler = logging.StreamHandler()
                console_handler.setFormatter(self.formatter)
                console_handler.setLevel(self.console_output_level)
                self.logger.addHandler(console_handler)
    
                # 每天重新创建一个日志文件,最多保留backup_count份
                file_handler = TimedRotatingFileHandler(filename=os.path.join(LOG_PATH, self.log_file_name),
                                                        when='D',
                                                        interval=1,
                                                        backupCount=self.backup_count,
                                                        delay=True,
                                                        encoding='utf-8'
                                                        )
                file_handler.setFormatter(self.formatter)
                file_handler.setLevel(self.file_output_level)
                self.logger.addHandler(file_handler)
            return self.logger
    
    
    logger = Logger().get_logger()
  • 相关阅读:
    JS 百度地图路书---动态路线
    jQuery---创建和添加节点
    CSS基础
    第一篇:前端知识之HTML内容
    JS高级---为内置对象添加原型方法
    JS DOM属性+JS事件
    Vue-router
    vue使用kkfileview文件预览功能
    JS高级---案例:验证密码的强度
    promise是怎么来的?
  • 原文地址:https://www.cnblogs.com/zsybk/p/13667533.html
Copyright © 2011-2022 走看看