Python使用日志模块快速调试代码并记录异常信息

目录
  • 一、日志层级
  • 二、创建模块
  • 三、使用日志的优点

大家好,为了进行调试和错误跟踪,人们在整个代码库中广泛使用日志,今天来看看如何在代码中定义日志,并探讨日志的权限。

一、日志层级

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

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使用日志模块快速调试代码并记录异常信息的文章就介绍到这了,更多相关Python日志模块调试内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python标准库中的logging用法示例详解

    目录 1.logging的介绍 2.简单用法示例 3.日志级别 4.打印格式的各个参数 5.日志输出到指定文件 6.日志回滚(按照文件大小滚动) 7.日志回滚(按照时间滚动) 1.logging的介绍 logging是Python标准库中记录常用的记录日志库,通过logging模块存储各种格式的日志,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等. 2.简单用法示例 首先创建一个logger.py的文件,其里面的代码如下所示: import logging # 1.创

  • python logging模块的分文件存放详析

    前言: 如果使用进到的日志文件方法:logging.FileHandler,会导致日志信息全部存放在一个日志文件中,不利于后面对日志文件的使用.下面分享常见的两种分文件存储日志的方法.delay = True 参数避免了出现多进程中读取日志权限的问题 TimedRotatingFileHandler 根据时间创建日志文件 TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, d

  • 代码解析python标准库logging模块

    目录 问题1:如何获取caller的(文件名,行号,函数名)? findCaller内容如下: currentframe函数的定义: 问题2: Logger对象的层级,父子关系如何实现的? Manager的getLogger()定义如下: 问题1:如何获取caller的(文件名,行号,函数名)? 当新增一条log记录时,最终将调用Logger类的_log方法,这个方法首先会创建一个LogRecord对象.LogRecord对象需要(filename, lineno, funcname)参数信息.

  • 一文详解Python中logging模块的用法

    目录 一.低配logging 1.v1 2.v2 3.v3 二.高配logging 1.配置日志文件 2.使用日志 三.Django日志配置文件 一.低配logging 日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning-->error-->critical,默认最低级别为warning级别. 1.v1 import logging logging.debug('调试信息') logging.info('正常信息') logging

  • 关于如何使用python的logging库

    logging是Python标准库中用于记录日志的模块.它提供了一种简单但灵活的方法来记录程序中的事件,以便稍后进行调试和分析. 使用logging库的基本步骤如下: 导入logging库 import logging 配置日志记录器 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') 上面的代码配置了一个基本的日志记录器,指定了日志记录级别为

  • Python日志模块logging用法

    一.概述 步骤 创建logger对象 创建handler对象 创建formatter对象 把formatter绑定到handler对象上 把handler对象绑定到logger对象上 设置级别 测试 二.低配logging 日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning-->error-->critical,默认最低级别为warning级别. critical=50.error =40 .arning =30.info = 20

  • Python日志模块logging的使用方法总结

    目录 导语 关于开发日志 关于logging基础使用 关于logging进阶使用 记录器 处理器 格式器 配置记录 实战 生成记录器 请求处理装饰器 总结 导语 日常开发中,定位程序异常,追溯事件发生场景都需要通过日志记录的方式.可以说一个好的开发日志设计可以让开发人员在后续项目维护的过程中节省时间成本,提升解决问题的效率. 目前在网上已经有许多关于Python日志操作的文章,部分文章总结的非常到位,Python官方也有日志常用的手册.自己写这篇文章是主要围绕Python官方的logging模块

  • Python 内置logging 使用详细介绍

    目录 logging 的主要作用 logging 日志等级 logging 的基础函数 logging 的四大组件(类) logging 的配置 logging 和 print 的区别 主要参考资料 logging 的主要作用 提供日志记录的接口和众多处理模块,供用户存储各种格式的日志,帮助调试程序或者记录程序运行过程中的输出信息. logging 日志等级 logging 日志等级分为五个等级,优先级从高到低依次是 : **CRITICAL; ** 程序严重错误 **ERROR; **程序错误

  • Python使用日志模块快速调试代码并记录异常信息

    目录 一.日志层级 二.创建模块 三.使用日志的优点 大家好,为了进行调试和错误跟踪,人们在整个代码库中广泛使用日志,今天来看看如何在代码中定义日志,并探讨日志的权限. 一.日志层级 在开始之前,需要注意的是,在日志记录中存在一个层次结构,称为日志树或日志者层次结构.该层次结构由几个级别组成,每个级别代表了日志信息的不同严重程度.最常见的层次是: CRITICAL #A critical error occurred, the program may not be able to continu

  • 详解 python logging日志模块

    目录 1.日志简介 2.日志级别 3.修改日志级别 4.日志记录到文件 5.指定日志格式 6.记录器(logger) 7.处理器(Handler) 8.处理器操作 9.格式器(formatter) 10.logging.basicConfig 11.日志配置 转自微信公众号: Python之禅 1.日志简介 说到日志,无论是写框架代码还是业务代码,都离不开日志的记录,他能给我们定位问题带来极大的帮助. 记录日志最简单的方法就是在你想要记录的地方加上一句 print , 我相信无论是新手还是老鸟都

  • 详解 python logging日志模块

    目录 1.日志简介 2.日志级别 3.修改日志级别 4.日志记录到文件 5.指定日志格式 6.记录器(logger) 7.处理器(Handler) 8.处理器操作 9.格式器(formatter) 10.logging.basicConfig 11.日志配置 转自微信公众号: Python之禅 1.日志简介 说到日志,无论是写框架代码还是业务代码,都离不开日志的记录,他能给我们定位问题带来极大的帮助. 记录日志最简单的方法就是在你想要记录的地方加上一句 print , 我相信无论是新手还是老鸟都

  • python logging日志模块的详解

    python logging日志模块的详解 日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如.磁盘空间低").这个软件还能按预期工作. ERROR:更严重的问题,软件没能执行一些功能 CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行 这5个等级,也

  • Python使用Turtle模块绘制五星红旗代码示例

    在Udacity上课时学到了python的turtle方法,这是一个很经典的用来教小孩儿编程的图形模块,最早起源于logo语言.python本身内置了这个模块,其可视化的方法可以帮助小孩儿对编程的一些基本理念有所理解. 在作业提交的论坛里看到很多turtle画出来的精美图形,想不出什么要画的东西,于是决定拿五星红旗来练练手. 前期准备 五星红旗绘制参数 Turtle官方文档 turtle的基本操作 # 初始化屏幕 window = turtle.Screen() # 新建turtle对象实例 i

  • Python logging日志模块 配置文件方式

    在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今天给大家分享一下以配置文件形式进行配置log日志 ; Centos6.7 Python3.6 logging0.5.1.2 logging模块有三个比较重要的功能组件: 1.loggers 配置文件可定义一些输出日志的appname 2.handler 过滤器,比如设置日志的分隔大小,输出位置,日志文件创

  • Python如何获取模块中类以及类的属性方法信息

    目录 一.sys.modules模块 二.inspect模块 三.python获取模块中所有类的实例 总结 一.sys.modules模块 sys.modules是一个全局字典,python启动后就将该字典加载在内存中,每当导入新的模块时sys.modules都将记录这些导入模块.字典sys.modules对于加载模块起到了缓冲的作用. sys.modules拥有字典所拥有的一切方法.如: import sys print(sys.modules[__name__]) print(sys.mod

  • python标准日志模块logging的使用方法

    最近写一个爬虫系统,需要用到python的日志记录模块,于是便学习了一下.python的标准库里的日志系统从Python2.3开始支持.只要import logging这个模块即可使用.如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: 复制代码 代码如下: import logging# 创建一个loggerlogger = logging.getLogger('mylogger')logger.setLevel(logging.DEBUG)# 创建一个ha

  • python logging日志模块以及多进程日志详解

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python的logging模块提供了灵活的标准模块,使得任何Python程序都可以使用这个第三方模块来实现日志记录.python logging 官方文档 logging框架中主要由四个部分组成: Loggers: 可供程序直接调用的接口 Handlers: 决定将日志记录分配至正确的目的地 Filters:

  • python logging日志模块原理及操作解析

    一.基本介绍 logging 模块是python自带的一个包,因此在使用的时候,不必安装,只需要import即可. logging有 5 个不同层次的日志级别,可以将给定的 logger 配置为这些级别: DEBUG:详细信息,用于诊断问题.Value=10. INFO:确认代码运行正常.Value=20. WARNING:意想不到的事情发生了,或预示着某个问题.但软件仍按预期运行.Value=30. ERROR:出现更严重的问题,软件无法执行某些功能.Value=40. CRITICAL:严重

随机推荐