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来实现

二、日志级别
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("输入日志信
日志大小、日志分层暂时使用不到,先补血。

浙公网安备 33010602011771号