使用logging实现日志收集

认识日志收集

1.什么是日志?

日志:就是用于记录系统运行时的信息,对一个事件的记录;也称为Log

有哪些信息需要记录?

  • 脚本运行过程中某个重要变量的值
  • 方法的输入参数和返回结果
  • 异常信息

2.为什么要收集日志?

图片[1] - 使用logging实现日志收集 - 正则时光
为什么要收集日志

3.日志级别

日志级别设定后,只有比该级别低的日志会写入日志。DEBUG是最详细的级别,CRITICAL最不详细

图片[2] - 使用logging实现日志收集 - 正则时光
logging日志级别

4.把日志收集到哪里?

控制台:方便自动化测试脚本的调试

日志文件:可以把日志长久的保存起来

Logging日志模块用法

步骤操作代码
1导包import logging
2创建日志器对象logger = logging.getLogger()
3设置日志打印级别logger.setLevel(logging.DEBUG)
4创建处理器对象st = logging.StreamHandler() #控制台
fh = logging.handlers.RotatingFileHandler() #文件
5创建日志信息格式fmt = “%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)]
– %(message)s”
formatter = logging.Formatter(fmt)
6将日志信息格式设置给处理器st.setFormatter(formatter)
fh.setFormatter(formatter)
7给日志器添加处理器logger.addHandler(st)
logger.addHandler(fh)
8打印日志logging.warning(‘test log sh-26’) #在需要打印日志的地方添加打印语句
使用logging日志模块打印日志操作步骤

1.Logger日志器

图片[3] - 使用logging实现日志收集 - 正则时光

2.Handler处理器

图片[4] - 使用logging实现日志收集 - 正则时光

3.Formatter格式化器

formatter = logging.Formatter(fmt=None)

fmt:指定消息格式化字符串,如果不指定该参数则默认使用message的原始值

占位符描述
%(name)s日志器的名称(日志通道)
%(levelno)s消息的数字日志级别(DEBUG, INFO,WARNING, ERROR, CRITICAL)
%(levelname)s消息的文本日志级别(DEBUG, INFO,WARNING, ERROR, CRITICAL)
%(pathname)s日志记录所在的源文件的完整路径名
%(filename)s路径名的文件名部分
%(module)s模块(文件名的名称部分)
%(lineno)d发出日志调用的源行号
%(funcName)s函数名
%(created)f日志记录创建的时间(time.time ()的返回值)
%(asctime)s日志记录创建的文本时间
%(msecs)d创建时间的毫秒部分
%(relativeCreated)dLogRecord创建时间(毫秒),相对于加载日志模块的时间
%(thread)d线程ID
%(threadName)s线程名
%(process)d进程ID
%(message)s日志信息
Formatter格式化器常用格式化符

4.日志打印函数封装

import logging.handlers
import logging

def init_log_config(filename, when='midnight', interval=1, backup_count=7):
    # 1. 创建日志器对象
    logger = logging.getLogger()
    # 2. 设置日志打印级别
    logger.setLevel(logging.DEBUG)
    # 3. 创建处理器对象
    # 控制台对象
    st = logging.StreamHandler()
    # 日志文件对象(时间分割)
    fh = logging.handlers.TimedRotatingFileHandler(filename,when=when,interval=interval,
                            backupCount=backup_count,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)

if __name__ == '__main__':
    # 初始化日志
    init_log_config('a.log')
    # 打印输出日志信息
    logging.debug('我是一个调试级别的日志')

5.日志打印

图片[5] - 使用logging实现日志收集 - 正则时光
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享