您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

Python logging模块怎么使用,你会了吗?

时间:2023-08-03 14:13:16  来源:  作者:ceshiren

Python/ target=_blank class=infotextkey>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模块进行日志记录。



Tags:Python logging   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Python logging模块怎么使用,你会了吗?
Python logging模块使用在开发和维护Python应用程序时,日志记录是一项非常重要的任务。Python提供了内置的logging模块,它可以帮助我们方便地记录应用程序的运行时信息、错误...【详细内容】
2023-08-03  Search: Python logging  点击:(278)  评论:(0)  加入收藏
Python Logging 使用指南
对程序员来说,Logging 是一种非常重要的功能。无论调试程序还是程序运行时的信息显示,Logging 都很有用。在本文中,我会演示为什么要使用以及如何使用 Python 中的 Logging...【详细内容】
2020-10-14  Search: Python logging  点击:(253)  评论:(0)  加入收藏
▌简易百科推荐
Python 可视化:Plotly 库使用基础
当使用 Plotly 进行数据可视化时,我们可以通过以下示例展示多种绘图方法,每个示例都会有详细的注释和说明。1.创建折线图import plotly.graph_objects as go# 示例1: 创建简单...【详细内容】
2024-04-01  Python技术    Tags:Python   点击:(8)  评论:(0)  加入收藏
Python 办公神器:教你使用 Python 批量制作 PPT
介绍本文将介绍如何使用openpyxl和pptx库来批量制作PPT奖状。本文假设你已经安装了python和这两个库。本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并...【详细内容】
2024-03-26  Python技术  微信公众号  Tags:Python   点击:(16)  评论:(0)  加入收藏
Python实现工厂模式、抽象工厂,单例模式
工厂模式是一种常见的设计模式,它可以帮助我们创建对象的过程更加灵活和可扩展。在Python中,我们可以使用函数和类来实现工厂模式。一、Python中实现工厂模式工厂模式是一种常...【详细内容】
2024-03-07  Python都知道  微信公众号  Tags:Python   点击:(31)  评论:(0)  加入收藏
不可不学的Python技巧:字典推导式使用全攻略
Python的字典推导式是一种优雅而强大的工具,用于创建字典(dict)。这种方法不仅代码更加简洁,而且执行效率高。无论你是Python新手还是有经验的开发者,掌握字典推导式都将是你技能...【详细内容】
2024-02-22  子午Python  微信公众号  Tags:Python技巧   点击:(32)  评论:(0)  加入收藏
如何进行Python代码的代码重构和优化?
Python是一种高级编程语言,它具有简洁、易于理解和易于维护的特点。然而,代码重构和优化对于保持代码质量和性能至关重要。什么是代码重构?代码重构是指在不改变代码外部行为的...【详细内容】
2024-02-22  编程技术汇    Tags:Python代码   点击:(33)  评论:(0)  加入收藏
Python开发者必备的八个PyCharm插件
在编写代码的过程中,括号几乎无处不在,以至于有时我们会拼命辨别哪个闭合括号与哪个开头的括号相匹配。这款插件能帮助解决这个众所周知的问题。前言在PyCharm中浏览插件列表...【详细内容】
2024-01-26  Python学研大本营  微信公众号  Tags:PyCharm插件   点击:(85)  评论:(0)  加入收藏
Python的Graphlib库,再也不用手敲图结构了
Python中的graphlib库是一个功能强大且易于使用的工具。graphlib提供了许多功能,可以帮助您创建、操作和分析图形对象。本文将介绍graphlib库的主要用法,并提供一些示例代码和...【详细内容】
2024-01-26  科学随想录  微信公众号  Tags:Graphlib库   点击:(86)  评论:(0)  加入收藏
Python分布式爬虫打造搜索引擎
简单分布式爬虫结构主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个...【详细内容】
2024-01-25  大雷家吃饭    Tags:Python   点击:(58)  评论:(0)  加入收藏
使用Python进行数据分析,需要哪些步骤?
Python是一门动态的、面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言。Python入门简单,代码可读性强,一段好的Python代码,阅读起来像是在读一篇外语文章。Python这种特...【详细内容】
2024-01-15  程序员不二    Tags:Python   点击:(162)  评论:(0)  加入收藏
Python语言的特点及应用场景, 同其它语言对比优势
Python语言作为一种高级编程语言,具有许多独特的特点和优势,这使得它在众多编程语言中脱颖而出。在本文中,我们将探讨Python语言的特点、应用场景以及与其他语言的对比优势。一...【详细内容】
2024-01-09    今日头条  Tags:Python语言   点击:(253)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条