添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

一、日志的输出:

1、日志默认的输出等级为:warning级别及以上的
2、想修改日志的默认输出等级?通过logging.basicConfig(level=“INFO”)----info需要用大写
3、想知道日志是什么时候打印出来的,以及其他参数?通过logging.basicConfig(format=console_fmt)
4、如果要同时添加这2个参数,需要写在一行代码中,logging.basicConfig(level=“INFO”,format=console_fmt)

  • %(name)s:名字
  • %(levelname)s:日志级别
  • %(asctime)s:打印时间,年月日时分秒
  • %(message)s:日志中的信息
  • %(lineno)d:报错日志在代码中第几行
# Time:2022 2022/3/1 16:05
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
# 1、日志默认的输出等级为:warning级别及以上的
# 2、想修改日志的默认输出等级?通过logging.basicConfig(level="INFO")----info需要用大写
# 3、想知道日志是什么时候打印出来的,以及其他参数?通过logging.basicConfig(format=console_fmt)
# 4、如果要同时添加这2个参数,需要写在一行代码中,logging.basicConfig(level="INFO",format=console_fmt)
# %(name)s:名字
# %(levelname)s:日志级别
# %(asctime)s:打印时间,年月日时分秒
# %(message)s:日志中的信息
# %(lineno)d:报错日志在代码中第几行
logger = logging.getLogger(__name__)
console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
logging.basicConfig(level="INFO",format=console_fmt)
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")

二、日志输出到控制台

# Time:2022 2022/3/1 17:20
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
# 第一步:创建日志器对象,默认等级为warning
logger = logging.getLogger("这是我的一个小测试日志")
logging.basicConfig(level="INFO")
# 第二步:创建控制台日志处理器
console_handler = logging.StreamHandler()
# 第三步:设置控制台日志的输出级别,需要日志器也设置日志级别为info;----根据两个地方的等级进行对比,取日志器的级别
console_handler.setLevel(level="WARNING")
# 第四步:设置控制台日志的输出格式
console_fmt = "%(name)s--->%(asctime)s--->%(message)s--->%(lineno)d"
fmt1 = logging.Formatter(fmt=console_fmt)
console_handler.setFormatter(fmt=fmt1)
# 第五步:将控制台日志器,添加进日志器对象中
logger.addHandler(console_handler)
logger.debug("---debug")
logger.info("---info")
logger.warning("---warning")
logger.error("---error")
logger.critical("---critical")

三、日志输出到文件

# Time:2022 2022/3/1 17:44
# Author: Jasmay
# -*- coding: utf-8 -*-
# Time:2022 2022/3/1 17:20
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
# 第一步:创建日志器对象,默认等级为warning
logger = logging.getLogger("这是我的一个小测试日志")
logging.basicConfig(level="INFO")
# 第二步:创建文件日志处理器
file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
# 第三步:设置控制台日志的输出级别,需要日志器也设置日志级别为info;----根据两个地方的等级进行对比,取日志器的级别
# 第四步:设置控制台日志的输出格式
file_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s"
fmt2 = logging.Formatter(fmt = file_fmt)
file_handler.setFormatter(fmt = fmt2)
# 第五步:将文件日志器,添加进日志器对象中
logger.addHandler(file_handler)
logger.debug("---debug")
logger.info("---info")
logger.warning("---warning")
logger.error("---error")
logger.critical("---critical")

四、同时将日志输出到控制台+文件

# Time:2022 2022/3/1 17:20
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
# 第一步:创建日志器对象,默认等级为warning
logger = logging.getLogger("这是我的一个小测试日志")
logging.basicConfig(level="INFO")
# 第二步:创建控制台日志处理器+文件日志处理器
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
# 第三步:设置控制台日志的输出级别,需要日志器也设置日志级别为info;----根据两个地方的等级进行对比,取日志器的级别
console_handler.setLevel(level="WARNING")
# 第四步:设置控制台日志和文件日志的输出格式
console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
file_fmt = "%(lineno)d--->%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s"
fmt1 = logging.Formatter(fmt = console_fmt)
fmt2 = logging.Formatter(fmt = file_fmt)
console_handler.setFormatter(fmt = fmt1)
file_handler.setFormatter(fmt = fmt2)
# 第五步:将控制台日志器、文件日志器,添加进日志器对象中
logger.addHandler(console_handler)
logger.addHandler(file_handler)
logger.debug("---debug")
logger.info("---info")
logger.warning("---warning")
logger.error("---error")
logger.critical("---critical")

五、日志类:将日志输出到控制台+文件

# Time:2022 2022/3/2 10:21
# Author: Jasmay
# -*- coding: utf-8 -*-
import logging
class Logger():
    def __init__(self,level="DEBUG"):
        # 创建日志器对象
        self.logger = logging.getLogger(__name__)
        self.logger.setLevel(level)
    def console_handler(self,level="DEBUG"):
        # 创建控制台的日志处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(level)
        # 处理器添加输出格式
        console_handler.setFormatter(self.get_formatter()[0])
        # 返回控制器
        return console_handler
    def file_handler(self, level="DEBUG"):
        # 创建文件的日志处理器
        file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
        file_handler.setLevel(level)
        # 处理器添加输出格式
        file_handler.setFormatter(self.get_formatter()[1])
        # 返回控制器
        return file_handler
    def get_formatter(self):
        """格式器"""
        console_fmt = logging.Formatter(fmt="%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s")
        file_fmt = logging.Formatter(fmt="%(lineno)d--->%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s")
        # 返回的是一个元组
        return console_fmt,file_fmt
    def get_log(self):
        # 日志器中添加控制台处理器
        self.logger.addHandler(self.console_handler())
        # 日志器中添加文件处理器
        self.logger.addHandler(self.file_handler())
        # 返回日志实例对象
        return self.logger

六、调用日志类:将日志输出到控制台+文件

# Time:2022 2022/3/2 10:45
# Author: Jasmay
# -*- coding: utf-8 -*-
from common.logone import Logger
class TestLog():
    def __init__(self):
        log = Logger()
        self.logger = log.get_log()
    def test_baili_01(self):
        self.logger.info("开始执行")
        self.logger.warning("结束执行")
# 实例化
test  = TestLog()
# 调用类中的方法
test.test_baili_01()
                    一、日志的输出:1、日志默认的输出等级为:warning级别及以上的2、想修改日志的默认输出等级?通过logging.basicConfig(level=“INFO”)----info需要用大写3、想知道日志是什么时候打印出来的,以及其他参数?通过logging.basicConfig(format=console_fmt)4、如果要同时添加这2个参数,需要写在一行代码中,logging.basicConfig(level=“INFO”,format=console_fmt)%(name)s:名
				
先贴上logger/handler/formatter/filter的用处(来源见参考中链接): Loggers expose the interface that application code directly uses. Handlers send the log records (created by loggers) to the appropriate destination. ...
优先级为:DEBUG<INFO<WARNING<ERROR<CRITICAL 日志的默认级别是warning级别及以上,debug和info都不会再控制台输出 三、几个重要的概念 Logger 记录器:提供日志的接口,供应用代码使用 Handle 处理器:将(记录器产生的)日志记录发送到哪里,即输出到哪里 Filter 过滤器:提供了更好的粒度控制,它可以决定输出哪些日志记录,提供一种 # 配置logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s', filename='output.log', filemode='a') # 定义一个StreamHandler,将日志输出控制台 console = logging.StreamHandler() console.setLevel(logging.ERROR) formatter = logging.Formatter('%(levelname)s %(message)s') console.setFormatter(formatter) # 将StreamHandler添加到root logger logging.getLogger('').addHandler(console) # 输出日志信息 logging.debug('This is a debug message') logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message') 这个配置会将日志信息输出文件output.log,并将错误信息输出控制台。你可以根据需要修改文件名、日志级别等参数。
dd2989: from common.common_util import CommonUtil 这个是安装方法是什么呢? from common.yaml_util import read_yaml-这个我已经按照yaml了为啥还不识别呢 能帮忙回答下吗? 谢谢 【pytest】七、pytest之parametrize结合yaml实现接口自动化 dd2989: 这个里面caseinfo指的什么呢? 【pytest】二、pytest之全局配置文件pytest.ini,及命令执行参数详解 一亲芳泽775: 为什么我在Python_files中指定了文件名,她还是会去执行其他文件而不执行我指定的文件呢 【pytest】三、pytest用例管理框架的前后置(固件、夹具)setup和teardown,及封装 c00sdn: 请问。setup/teardown和setup_method/teardown_method比较的话。是不是setup/teardown也是只能用在类中?谢谢