Python接口自动化-Logging

日志logging笔记
1)控制消息的级别,过滤掉不重要的消息
2)决定输出到控制台/日志文件中

一、logging框架

loggers

loggers 就是程序可以直接调用的一个日志接口,可以直接向logger写入日志信息

logger并不是直接实例化使用的,而是通过logging.getLogger(name)来获取对象

事实上logger对象是单例模式,logging是多线程安全的,也就是无论程序中哪里需要打日志获取到的logger对象都是同一个。但是logger并不支持多进程.

Handlers

Handlers 将logger发过来的信息进行准确地分配,送往正确的地方

比如,送往控制台或者日志文件。它决定了每个日志的行为,是之后需要配置的重点区域

每个Handler同样有一个日志级别,一个logger可以拥有多个handler也就是说logger可以根据不同的日志级别将日志传递给不同的handler。当然也可以相同的级别传递给多个handlers这就根据需求来灵活的设置了

Filters

Filters 提供了更细粒度的判断,来决定日志是否需要打印

原则上handler获得一个日志就必定会根据级别被统一处理,但是如果handler拥有一个Filter可以对日志进行额外的处理和判断

例如Filter能够对来自特定源的日志进行拦截or修改甚至修改其日志级别

Formatters

指定了最终某条记录打印的格式布局。

Formatter会将传递来的信息拼接成一条具体的字符串,默认情况下Format只会将信息%(message)s

一个Handler只能拥有一个Formatter 因此如果要实现多种格式的输出只能用多个Handler来实现

image

二、日志级别

CRITICAL > ERROR > WARNING > INFO > DEBUG


三、代码实例

"""
@Time: 2021-07-06 14:19
@Target: 日志封装
@Author: dingkw
"""
import logging
from config.init_config import *


class Toolslog():


    def __init__(self,logger=None):
        # 创建logger
        self.logger = logging.getLogger(logger)
        # 设置log总开关
        self.logger.setLevel(logging.DEBUG)


        # 创建fileHandle,用于写入日志文件
        # logPath格式  ./py2020.log
        fileHandle = logging.FileHandler(logPath,'w',encoding='utf-8')
        # 设置fileHandle日志级别
        fileHandle.setLevel(logging.DEBUG)


        # 创建streamHandle,用于控制台输出
        streamHandle = logging.StreamHandler()
        streamHandle.setLevel(logging.DEBUG)


        # 设置handle的输出格式
        formatter = logging.Formatter('[%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s]%(message)s')
        fileHandle.setFormatter(formatter)
        streamHandle.setFormatter(formatter)


        # 给logger添加handle
        self.logger.addHandler(fileHandle)
        self.logger.addHandler(streamHandle)


        # 关闭打开的文件
        fileHandle.close()
        streamHandle.close()




    def getLog(self):
        return self.logger


# 创建日志对象
log = Toolslog().getLog()
'''
    需要在其他模块调用logging日志模块
    先导包,再直接log.info("输入日志信

日志大小、日志分层暂时使用不到,先补血。

posted @ 2021-09-13 15:16  难删亦删  阅读(143)  评论(0)    收藏  举报