python之logger

该博客介绍了如何利用Python的logging模块创建日志系统,并结合Selenium进行自动化测试,记录测试过程中的信息。通过设置日志级别、文件存储和控制台输出,确保测试日志的完整性和易读性。在遇到异常时,能够捕获错误并输出详细的错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import logging
import os.path
import time
def test_log():
        """指定保存日志的文件路径,日志级别,以及调用文件
        将日志存入到指定的文件中
        :paramlogger:
        """
        # 创建一个logger
        logger = logging.getLogger()
        logger.setLevel(logging.INFO)
        #此处的判断是为了不重复调用test_log,导致重复打印出日志;第一次调用就会创建一个,第二次就不会再次调用了,也就不会出现重复日志的情况
        if not logger.handlers:
        # 创建一个handler,用于写入日志文件
            fh=logging.FileHandler(log_filename,mode='a',encoding='utf-8')
            fh.setLevel(logging.INFO)
            # 创建一个hander用于输出到控制台
            ch=logging.StreamHandler()
            ch.setLevel(logging.INFO)
            # 定义handler的输出格式
            formeter=logging.Formatter('%(asctime)s-%(module)s-%(lineno)d-%(name)s-%        (levelname)s-%(message)s')
            fh.setFormatter(formeter)
            ch.setFormatter(formeter)
            # 给logger添加handler
            logger.addHandler(fh)
            logger.addHandler(ch)
        return logger





import time
from selenium import webdriver
import logger

mylogger=logger.test_log()
class TestMyLog(object):
    def print_log(self):
        driver=webdriver.Firefox()
        mylogger.info(message)
        driver.maximize_window()
        mylogger.info("最大化浏览器窗口。")
        driver.implicitly_wait(8)
        try:
            #get1方法错误
            driver.get1("https://www.baidu.com")
        except Exception as e:
            mylogger.error('访问百度失败{}'.format(e))
        mylogger.info("打开百度首页。")
        time.sleep(1)
        mylogger.info("暂停一秒。")
        driver.close()
        mylogger.info("关闭并退出浏览器。")
TestMyLog().print_log()

 

### Pythonlogging模块的配置方法 #### 配置基础设置 为了使用`logging`模块记录日志,首先需要通过`basicConfig()`函数来进行一些基本配置。此函数允许指定日志级别、输出格式以及目的地等参数[^1]。 ```python import logging # 定义日志输出格式 log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" date_format = '%Y-%m-%d %H:%M:%S' # 基础配置 logging.basicConfig( level=logging.DEBUG, format=log_format, datefmt=date_format, filename='app.log', # 将日志写入文件而不是控制台 filemode='w' # 覆盖模式打开日志文件,默认为'a'(追加) ) ``` #### 创建并命名Logger对象 除了全局的日志配置外,还可以创建特定名称的`Logger`实例来区分不同部分的日志消息。这有助于更好地管理和过滤来自应用程序各个组件的日志条目[^3]。 ```python logger = logging.getLogger('my_logger') ``` #### 添加Handler处理器 如果希望将相同的消息发送到多个地方(比如既显示在屏幕上又保存至文件),则可以通过向同一个`Logger`添加不同的`Handler`来实现这一功能[^2]。 ```python console_handler = logging.StreamHandler() file_handler = logging.FileHandler('debug.log') # 可以为每个handler单独设定格式化器 formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') console_handler.setFormatter(formatter) # 给logger增加handlers logger.addHandler(console_handler) logger.addHandler(file_handler) ``` #### 设定Log Level与Filtering 每种类型的事件都有相应的严重程度标签(DEBUG, INFO, WARNING, ERROR 和 CRITICAL)。只有当事件的重要性等于或高于所设阈值时才会被处理;因此可以根据需求调整最低可见度以减少不必要的噪音信息[^4]。 ```python logger.setLevel(logging.INFO) # 设置最小可见等级为INFO以上 ``` #### 记录不同类型的信息 最后就是实际调用相应的方法去记录想要跟踪的数据了: - `logger.debug()`: 开发期间使用的低优先级提示; - `logger.info()`: 描述正常操作流程的一般性说明; - `logger.warning()`: 表明潜在问题但仍可继续执行的情况报告; - `logger.error()`: 发生异常但不至于终止整个进程的情形描述; - `logger.critical()`: 极端严重的错误状况通知[^5]。 ```python try: result = divide_by_zero() except ZeroDivisionError as e: logger.error(f"An exception occurred: {e}") else: logger.info("Operation completed successfully.") finally: logger.debug("Exiting function...") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值