目录
一、日志层级
二、创建模块
三、使用日志的优点
首页 后端开发 Python教程 Python中logging日志模块代码怎么调试

Python中logging日志模块代码怎么调试

May 10, 2023 pm 04:31 PM
python logging

一、日志层级

在开始之前,需要注意的是,在日志记录中存在一个层次结构,称为日志树或日志者层次结构。该层次结构由几个级别组成,每个级别代表了日志信息的不同严重程度。最常见的层次是:

CRITICAL #A critical error occurred, the program may not be able to continue running.
ERROR    #An error occurred that should be investigated.
WARNING  #An indication that something unexpected happened or indicative of some problem in the near future.
INFO     #General information about the program's execution.
DEBUG    #Detailed information for debugging purposes.

二、创建模块

让我们创建一个名为set_logging.py的python模块:

import logging
logger = logging.getLogger()
def set_logger():
  logger.setLevel(logging.INFO)
  handler = logging.StreamHandler()
  handler.setLevel(logger_level)
  formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  handler.setFormatter(formatter)
  logger.addHandler(handler)
登录后复制

为了明确代码,我们用getLogger函数创建一个日志器实例,并使用setLevel来设置日志级别(DEBUGINFO等)。日志器的setLevel方法就像一个过滤器,它决定了一条日志信息是否应该被处理并发送给处理程序。例如,如果我们将日志记录器的级别设置为INFO,那么日志记录器就不会向处理程序发送级别为DEBUG的消息,因为它们的严重程度低于在日志记录器上设置的最低级别。它只将级别为INFO或更高的日志消息(即WARNINGERRORCRITICAL)发送给处理程序进行处理。

我们创建一个StreamHandler,将日志信息发送到一个流中,如控制台或终端。它被用来输出日志信息以达到调试的目的。我们还为处理程序设置了级别。

我们这样做是因为当处理程序收到来自日志记录器的消息时,它将把这些消息与它的级别进行比较,并在发出之前过滤掉严重程度较低的消息。当我们有不同的处理程序时:

logger.setLevel(logging.INFO)
file_handler = logging.FileHandler()
file_handler.setLevel(logging.ERROR)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)

由于日志记录器的级别被设置为INFO,它只向两个处理程序发送级别为INFO或更高的日志消息,但每个处理程序只处理达到或超过其指定日志级别的消息。

回到我们的主要例子,然后我们创建一个格式化器并将其添加到处理程序中。格式化器指定了日志消息的格式,包括时间戳、日志记录器名称、日志级别和消息。最后,我们将处理程序添加到日志记录器中"。

现在在代码中,需要调用set_logger,如下所示:

import logging
from set_logging import set_logger
set_logger()
logger = logging.getLogger()
def roman_number(s: str) -> int:
    dic = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
    res = 0
    pre = None
    for char in s:
        res += dic.get(char)
        if dic.get(pre) and dic.get(pre) < dic.get(char):
            res -= 2 * dic.get(pre)
        pre = char
    logger.info("logging is awesome")
    return res
roman_number("IV")
登录后复制

运行这段代码,结果如下:

2023-03-04 02:26:57,619 - root - INFO - logging is awesome

三、使用日志的优点

  • 级别。一个日志记录器提供了一种方法来为不同类型的消息设置不同的日志级别,如DEBUGINFOWARNINGERRORCRITICAL。这使得根据日志消息的严重程度来过滤和确定其优先级变得更加容易。当然,打印可以模仿与日志相同的行为,但它需要更多的硬编码工作,而且不像日志那样灵活。

  • 性能。打印日志信息可能比使用记录器慢,特别是在处理大量数据或频繁进行记录的时候。

  • 可配置性。记录器提供了一种方法来配置应用程序的日志行为,如日志级别、日志目的地和日志格式,而无需修改源代码。这使得随着时间的推移,更容易管理和维护日志行为。

  • 灵活性。记录器允许你将日志信息发送到多个目的地,如控制台、文件或数据库。这种灵活性使得管理日志和分析它们变得更加容易。

以上是Python中logging日志模块代码怎么调试的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

有什么手机APP可以将XML转换成PDF? 有什么手机APP可以将XML转换成PDF? Apr 02, 2025 pm 08:54 PM

无法找到一款将 XML 直接转换为 PDF 的应用程序,因为它们是两种根本不同的格式。XML 用于存储数据,而 PDF 用于显示文档。要完成转换,可以使用编程语言和库,例如 Python 和 ReportLab,来解析 XML 数据并生成 PDF 文档。

有没有手机APP可以将XML转换成PDF? 有没有手机APP可以将XML转换成PDF? Apr 02, 2025 pm 09:45 PM

没有APP可以将所有XML文件转成PDF,因为XML结构灵活多样。XML转PDF的核心是将数据结构转换为页面布局,需要解析XML并生成PDF。常用的方法包括使用Python库(如ElementTree)解析XML,并利用ReportLab库生成PDF。对于复杂XML,可能需要使用XSLT转换结构。性能优化时,考虑使用多线程或多进程,并选择合适的库。

手机XML转PDF,转换速度快吗? 手机XML转PDF,转换速度快吗? Apr 02, 2025 pm 10:09 PM

手机XML转PDF的速度取决于以下因素:XML结构的复杂性手机硬件配置转换方法(库、算法)代码质量优化手段(选择高效库、优化算法、缓存数据、利用多线程)总体而言,没有绝对的答案,需要根据具体情况进行优化。

XML转换成图片的大小如何控制? XML转换成图片的大小如何控制? Apr 02, 2025 pm 07:24 PM

想要通过XML生成图片,需要使用图形库(如Pillow、JFreeChart)作为桥梁,根据XML中的元数据(尺寸、颜色)生成图片。控制图片大小的关键在于调整XML中&lt;width&gt;和&lt;height&gt;标签的值。然而,在实际应用中,XML结构的复杂性、图形绘制的精细度、图片生成的速度和内存消耗,以及图片格式的选择,都对生成的图片大小产生影响,因此需要深入理解XML结构、熟练掌握图形库,以及考虑优化算法和图片格式选择等因素。

xml格式化工具推荐 xml格式化工具推荐 Apr 02, 2025 pm 09:03 PM

XML格式化工具可以将代码按照规则排版,提高可读性和理解性。选择工具时,要注意自定义能力、对特殊情况的处理、性能和易用性。常用的工具类型包括在线工具、IDE插件和命令行工具。

xml格式如何美化 xml格式如何美化 Apr 02, 2025 pm 09:57 PM

XML 美化本质上是提高其可读性,包括合理的缩进、换行和标签组织。其原理是通过遍历 XML 树,根据层级增加缩进,并处理空标签和包含文本的标签。Python 的 xml.etree.ElementTree 库提供了方便的 pretty_xml() 函数,可以实现上述美化过程。

怎么在手机上把XML文件转换为PDF? 怎么在手机上把XML文件转换为PDF? Apr 02, 2025 pm 10:12 PM

不可能直接在手机上用单一应用完成 XML 到 PDF 的转换。需要使用云端服务,通过两步走的方式实现:1. 在云端转换 XML 为 PDF,2. 在手机端访问或下载转换后的 PDF 文件。

C语言 sum 的作用是什么? C语言 sum 的作用是什么? Apr 03, 2025 pm 02:21 PM

C语言中没有内置求和函数,需自行编写。可通过遍历数组并累加元素实现求和:循环版本:使用for循环和数组长度计算求和。指针版本:使用指针指向数组元素,通过自增指针遍历高效求和。动态分配数组版本:动态分配数组并自行管理内存,确保释放已分配内存以防止内存泄漏。

See all articles