百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

软件测试|Python logging模块怎么使用,你会了吗?

off999 2025-09-12 01:27 34 浏览 0 评论


Python logging模块使用

在开发和维护Python应用程序时,日志记录是一项非常重要的任务。Python提供了内置的logging模块,它可以帮助我们方便地记录应用程序的运行时信息、错误和调试信息。本文将介绍如何使用Python logging模块进行日志记录。

获取更多技术资料,请点击!> 「链接」

logging模块

logging是Python自带的用于记录程序运行日志的模块,它将日志分为5个等级,分别是:

  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • CRITICAL

同时也可以将日志输出到控制台或者写入到日志文件中。

logging中的常用对象

  • Logger:日志记录器,是应用程序中可以直接使用的接口。
  • Handler:日志处理器,用以表明将日志保存到什么地方以及保存多久。
  • Formatter:格式化,用以配置日志的输出格式。

三者关系为,一个 Logger 使用一个 Handler,一个 Handler 使用一个 Formatter

日志输出到控制台

import logging

# 创建logger实例
logger = logging.getLogger('example')

# 设置日志级别
logger.setLevel(logging.DEBUG)

# 创建控制台处理器,将日志输出到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

# 创建日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 将日志格式应用到处理器
console_handler.setFormatter(formatter)
# 将处理器添加到logger实例中
logger.addHandler(console_handler)

# 记录日志信息
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')

运行代码,控制台输出如下:

2023-06-29 11:04:29,242 - example - DEBUG - debug
2023-06-29 11:04:29,242 - example - INFO - info
2023-06-29 11:04:29,242 - example - WARNING - warning
2023-06-29 11:04:29,242 - example - ERROR - error
2023-06-29 11:04:29,242 - example - CRITICAL - critical

日志输出到文件

更多时候,我们需要将日志保存起来,所以我们可以指定将日志输出到日志文件中,代码如下:

import logging

filename = "{}.log".format(__file__)
fmt = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"

logging.basicConfig(
    level=logging.DEBUG,
    filename=filename,
    filemode="w",
    format=fmt
)

logging.info("info")
logging.debug("debug")
logging.warning("warning")
logging.error("error")
logging.critical("critical")

日志文件内容如下图:


同时输出到文件和控制台

import logging

# 创建logger对象
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)  # log等级总开关

# log输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")

# 控制台handler
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO) # log等级的开关
stream_handler.setFormatter(formatter)

# 文件handler
file_handler = logging.FileHandler("logging.log")
file_handler.setLevel(logging.WARNING) # log等级的开关
file_handler.setFormatter(formatter)

# 添加到logger
logger.addHandler(stream_handler)
logger.addHandler(file_handler)

# 输出日志
logger.info("info")
logger.debug("debug")
logger.warning("warning")
logger.error("error")
logger.critical("critical")

logging.conf配置文件

我们可以通过logging.conf来配置日志的输出,logging.conf名称是固定的。

[loggers]
keys = root

[handlers]
keys = logfile

[formatters]
keys = generic

[logger_root]
handlers = logfile

[handler_logfile]
class = handlers.TimedRotatingFileHandler
args = ('demo.log', 'midnight', 1, 10)
level = DEBUG
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-3.5s [%(name)s:%(lineno)s] %(message)s
import logging.config

logging.config.fileConfig('logging.conf')

logging.debug('debug message')
logging.info("info message")
logging.warning('warning message')
logging.error("error message")
logging.critical('critical message')

运行结果如下:


循环覆盖式日志处理

随着程序逐渐运行,日志规模会越来越大,我们就需要删除掉之前的日志,也可以设置单个日志的大小,当日志大小达到限定值时,会自动开始写入新的日志文件。

import logging
from logging.handlers import RotatingFileHandler

logger = logging.getLogger("root")
# 设置logger等级
logger.setLevel(logging.DEBUG)

# 设置日志格式
formatter = logging.Formatter(
    fmt='%(asctime)s - %(pathname)s - %(name)s - %(levelname)s: - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S')

# 设置日志回滚  # 单个日志文件最大为1k,
# 最多保存4份日志文件(除了当前写入的文件外)
# 日志文件编码格式为utf-8
handler = RotatingFileHandler("logging.log", maxBytes=1024 * 1, backupCount=4, encoding='utf-8')
handler.setFormatter(formatter)

# 给logger添加handler
logger.addHandler(handler)

# 测试主模块
for i in range(100):
    logger.debug("测试日志main %d", i)

总结

通过使用Python的logging模块,我们可以方便地进行日志记录并获得应用程序的运行时信息。我们可以设置不同的日志级别,根据需要记录调试信息、警告、错误等。此外,我们还可以将日志记录到文件中,以供后续查看和分析。

使用logging模块进行日志记录可以帮助我们更好地理解应用程序的运行状况,并帮助我们快速定位和解决问题。建议在开发和维护Python应用程序时,充分利用logging模块进行日志记录。

获取更多技术资料,请点击!> 「链接」

相关推荐

u盘莫名其妙要格式化(u盘总是要格式化什么意思)

如果您在使用U盘时突然收到提示需要格式化的消息,这可能是由于以下原因之一引起的:U盘感染病毒:U盘中可能存在恶意病毒,这些病毒可能会导致U盘无法正常使用。当您尝试打开U盘时,系统会提示您进行格式化操作...

win7家庭版原版(win7家庭版价格)

你的win7旗舰版应该是个盗版软件,在你使用的过程中你可能触碰到了后台升级,升级完以后就变成了家庭版了,在你不知不觉中被改变的,厄这个软件属于盗版的,厄升级完以后没什么大区别,这个旗舰版家庭版在家里面...

win10自动更新失败怎么办(win10自动升级失败)

安装更新失败有许多原因。WindowsUpdate需要能够扫描您的计算机以了解需要哪些更新,并能够下载和安装这些更新。如果某个阶段遇到问题,则可能阻止某个更新安装到计算机中。有关错误或失败的详细信...

截图的几种方法(截图的几种方法有哪些)

 第一种截图方式:按printScreen键。按一下键盘上的printScreen键以后,整个屏幕会被截取下来,截图会默认保存在剪贴板中。第二种截图方式:使用微信截图。进入聊天界面,我们会发...

电脑装了两个系统怎么切换(电脑安装2个系统怎么更换启动)

1.点击运行打开电脑点击左下角的开始菜单栏选项,右击鼠标在序列栏中选择运行打开。2.输入msconfig接着在运行的输入框中输入msconfig点击确定即可打开系统配置。3.点击引导打开系统配置的页面...

linux系统哪个版本好用(最好linux系统版本)

个人比较推荐Debian这个发行版本。DebianGNU/Linux于1993年首次公布,至今已经有近30年历史了。当然其他版本比如openSUSE,Slackware,ArchLinux,Ubu...

win10激活在哪里查看(win10激活时间在哪里看)

在Windows10中,您可以通过以下方法查看激活状态:方法1:使用“设置”应用1.点击屏幕左下角的“开始”按钮,然后点击“设置”(齿轮图标)。2.在设置窗口中,点击“系统”图标。3.在“系统...

官方win10dll文件修复工具(官方win7dll文件修复工具)

当电脑丢失dll文件时,可以采用以下几种方法进行一键修复:从回收站还原:如果是不小心误删了一些计算机文件,导致电脑出现异常的情况时,首先就可以去回收站找回dll文件,如果文件还在,就可以通过还原操作来...

qq所有历史旧版本大全(qq历史版本一览表)

有2种方法。一种是:你是QQ会员。你可以把旧版打开,聊天记录上传。然后打开新的QQ,下载。第2种是:你在硬盘上装了QQ软件,然后你就点卸载(uninst),把原来的卸了。然后按原位置覆盖,装上06版。...

电脑显示器分辨率怎么调(显示分辨率无法调整)

1、以win7为例,首先右键点击桌面,在右键菜单中直接显示了屏幕分辨率的选项,用鼠标点击一下这个选项。2、在分辨率设置选项页面中,有一个分辨率的选项,点击一下这个选项,上面默认显示的数值是你现在的屏幕...

8系统(8系统点检控制包含什么)

WIndows8系统是微软目前最新的操作系统,Moto的图形界面设计,使很多已经习惯于早期windows系统的用户难以接受,Windows8是一个向平板和桌面系统妥协的产物,存在着相当多的利弊。...

电脑软件管家(电脑软件管家在哪里找到)

电脑管家有着最大的安全云库,全新的杀毒引擎,深度清理电脑垃圾,为电脑重回巅峰状态,更有账号宝专版,10倍提升QQ防盗号能力,是很好用的。就自己而言,在电脑上用的是腾讯电脑管家这个第三方系统安全软件,管...

office2010破解(office2010破解密钥)
  • office2010破解(office2010破解密钥)
  • office2010破解(office2010破解密钥)
  • office2010破解(office2010破解密钥)
  • office2010破解(office2010破解密钥)
迅雷种子搜索器(迅雷种子搜索器手机版下载)

    迅雷种子搜索方法:    1.在开始菜单栏或者到文件的安装路径文件夹中找到P2P种子搜索器。&nb...

手机怎么解压文件(苹果手机怎么解压文件)

手机解压文件方法:1、首先,在手机中找到文件管理,打开文件管理。2、打开文件管理之后找到压缩包,然后打开。3、打开安装包之后,选择需要的文件,。4、接下来找到“解压至”,点击“解压至”。5、点击之后,...

取消回复欢迎 发表评论: