zoukankan      html  css  js  c++  java
  • python:利用logbook模块管理日志

     

    日志管理作为软件项目的通用部分,无论是开发还是自动化测试过程中,都显得尤为重要。

    最初是打算利用python的logging模块来管理日志的,后来看了些github及其他人的自动化框架设计,做了个比对后,还是决定使用logbook。

    这篇博客,介绍下python中的logbook模块的使用方法,仅供参考。。。

    一、下载安装

    1、文件安装

    从官网下载logbook安装文件,然后安装即可。

    官网链接:https://pypi.org/project/Logbook/

    2、pip命令安装

    进入CMD命令行,输入 pip install logbook 命令进行安装,安装成功后,输入 pip show logbook 命令,查看相关信息。

    二、logbook简介

    logbook的设计初衷,就是用来取代python的标准库日志模块:logging。具体内容可通过下方的链接查看官方文档说明:

    官方文档:http://logbook.readthedocs.io/en/stable/index.html

    三、用法说明

    示例代码如下:log.py

    复制代码
    # coding=utf-8
    import os
    import sys
    import logbook
    from logbook import Logger,StreamHandler,FileHandler,TimedRotatingFileHandler
    from logbook.more import ColorizedStderrHandler
    
    def log_type(record,handler):
        log = "[{date}] [{level}] [{filename}] [{func_name}] [{lineno}] {msg}".format(
            date = record.time,                              # 日志时间
            level = record.level_name,                       # 日志等级
            filename = os.path.split(record.filename)[-1],   # 文件名
            func_name = record.func_name,                    # 函数名
            lineno = record.lineno,                          # 行号
            msg = record.message                             # 日志内容
        )
        return log
    
    # 日志存放路径
    LOG_DIR = os.path.join("Log")
    if not os.path.exists(LOG_DIR):
        os.makedirs(LOG_DIR)
    # 日志打印到屏幕
    log_std = ColorizedStderrHandler(bubble=True)
    log_std.formatter = log_type
    # 日志打印到文件
    log_file = TimedRotatingFileHandler(
        os.path.join(LOG_DIR, '%s.log' % 'log'),date_format='%Y-%m-%d', bubble=True, encoding='utf-8')
    log_file.formatter = log_type
    
    # 脚本日志
    run_log = Logger("script_log")
    def init_logger():
        logbook.set_datetime_format("local")
        run_log.handlers = []
        run_log.handlers.append(log_file)
        run_log.handlers.append(log_std)
    
    # 实例化,默认调用
    logger = init_logger()
    复制代码

    代码解析:

    1、定义日志文件类型,依次按照时间、日志等级、测试文件名、函数方法名、行数、具体的信息来展示;

       日志等级:

    level describe
    critical 严重错误,会导致程序退出
    error 可控范围内的错误
    warning 警告信息
    notice 大多情况下希望看到的记录
    info 大多情况不希望看到的记录
    debug 调试程序时详细输出的记录

    2、定义日志存放路径为Log文件夹;

    3、logbook的日志输出方式有2种:打印到屏幕(比较适合调试时候,正式使用时可以将其注释掉)和打印输出到日志文件;

    4、定义日志输出;

    5、实例化,方便其他模块调用;

    可以通过测试代码来测试日志是否打印到了对应的路径,测试代码如下:test_log.py

    复制代码
    # coding=utf-8
    import os
    from log import run_log as logger
    
    if __name__ == '__main__':
        logger.info("测试log模块,暂时就优化到这一步,后续再改进")
    复制代码

    测试结果:

    ####


    python:利用logbook模块管理日志

    1. 模块安装(采用pip命令安装)
        进入cmd命令,输入pip install logbook安装, 安装成功之后采用pip show logbook查看相关信息
    2. logbook简介
        http://logbook.readthedocs.io/en/stable/index.html
    3. 用法说明
    import os
    import logbook
    from logbook import Logger, TimedRotatingFileHandler
    from logbook.more import ColorizedStderrHandler
     
     
    # 设置日志格式
    def log_type(record, handler):
        log = "[{date}] [{level}] [{filename}] [{func_name}] [{lineno}] {msg}".format(
            date=record.time,  # 日志时间
            level=record.level_name,  # 日志等级
            filename=os.path.split(record.filename)[-1],  # 文件名
            func_name=record.func_name,  # 函数名
            lineno=record.lineno,  # 行号
            msg=record.message  # 日志内容
        )
        return log
     
     
    # 日志存放路径
    LOG_DIR = os.path.join("Log")
    if not os.path.exists(LOG_DIR):
        os.makedirs(LOG_DIR)
    # 日志打印到屏幕
    log_std = ColorizedStderrHandler(bubble=True)
    # 生成日志格式
    log_std.formatter = log_type
    # 日志打印到文件
    log_file = TimedRotatingFileHandler(
        os.path.join(LOG_DIR, '%s.log' % 'log'), date_format='%Y-%m-%d', bubble=True, encoding='utf-8')
    # 日志生成格式
    log_file.formatter = log_type
     
    # 脚本日志
    run_log = Logger("global_log")
     
     
    def init_logger():
        logbook.set_datetime_format("local")
        # 生效配置
        run_log.handlers = []
        run_log.handlers.append(log_file)
        run_log.handlers.append(log_std)
     
    # 实例化,默认调用
    logger = init_logger()
     
     
    if __name__ == '__main__':
        run_log.info("测试Log模块")

    #####

    #####

  • 相关阅读:
    centos8 将SSSD配置为使用LDAP并要求TLS身份验证
    Centos8 搭建 kafka2.8 .net5 简单使用kafka
    .net core 3.1 ActionFilter 拦截器 偶然 OnActionExecuting 中HttpContext.Session.Id 为空字符串 的问题
    Springboot根据不同环境加载对应的配置
    VMware Workstation12 安装 Centos8.3
    .net core json配置文件小结
    springboot mybatisplus createtime和updatetime自动填充
    .net core autofac依赖注入简洁版
    .Net Core 使用 redis 存储 session
    .Net Core 接入 RocketMQ
  • 原文地址:https://www.cnblogs.com/andy0816/p/15614238.html
Copyright © 2011-2022 走看看