一文弄懂Python中的Logging模块

1. 问题的由来

我们在运行代码的时候,总是期望可以获得更多的信息,并记录潜在错误。我们不妨可以使用Logging模块来代替常见的print语句,以此来协助帮助我们进行简洁的日志输出。

2. 为什么需要使用Logging模块

Logging模块允许我们获取特定代码中错误调试信息。对于一些小型项目,简单的print操作有助于帮主我们协助定位语句中的错误。但在一些更加复杂的项目中,比如某些项目中含有多个函数和子模块,此时使用logging是一个更好、更有助于条理输出的选择。
总之,弄明白Logging模块的配置虽然是复杂的,但是绝对是值得的。

3. Logging 导入

Logging模块是Python的内置模块,所以我们无需再显示进行安装。如果我们想要使用该模块,可以直接使用以下语句:

import logging

其中,Logging模块有很多内容,但是今天主要分享一个基础例子和一个高级例子供大家学习。

4. Logging Levels

日志记录级别(Logging Levels)允许我们设置更加具体的输出日志等级,例如调试信息、INFO信息,或者错误信息。

常见的日志等级包括:

LevelsDescriptions
DEBUGDetailed information. mostly for diagnostics
INFOMostly to confirm that something is working.
WARNINGSomething happens that can create problems in the future.
ERRORA serious problem. the software cannot perform the action.
CRITICALSerious Error. software unable to continue.

默认的日志等级为 WARNING,如果我们未对日志级别进行配置,则只输出等级高于WARNING的消息,即ERRORCRITICAL消息。

5. 基础用法

如果我们需要改变日志输出的级别,可以通过basicConfig函数进行配置,样例如下:
在这里插入图片描述
同时我们也可以将输出信息输出至文件中,相应的配置语句如下:
在这里插入图片描述
更近一步,如果我们需要规定输出信息的格式,我们可以对参数format进行相应的设置,代码如下:
在这里插入图片描述
上述代码中,我们通过设置format参数,可以将输出的信息按照time-message的格式进行规范化输出。当然我们也可以定义自己喜欢的输出格式。

最后给出一个完整的样例,如下:
在这里插入图片描述
我们查看相应的log文件,输出如下:

2022-04-28 22:12:26,095-10

可以看书,在最后的-号之前为当前语句的运行时间,之后为我们调试的输出信息,也就是变量sum的取值。

6. 高级用法

接下来我们来分享一些Logging模块中更为实用的高级用法,首先我们一般根据相应的py文件名来生成相应的输出日志文件,样例如下:
在这里插入图片描述
我们使用上述日志文件命名的方式可以方便我们快速的知道当前的调试信息是在那个子模块中。

同时,我们一般使用setLevel()函数来设置相应的日志等级,样例如下:
在这里插入图片描述
当然我们也可以使用FileHandler来创建输出日志文件,样例如下:
在这里插入图片描述
当然,我们我们希望同时可以将日志信息输出在控制台,我们可以使用StreamHandler来实现,样例如下:

在这里插入图片描述

接着,我们可以通过Formatter来设置输出日志的格式,样例代码如下:
在这里插入图片描述

最后,我们将上述所有的操作拼到一起,得到如下配置设定:
在这里插入图片描述
在具体应用中,我们每次的调用形式如下:

logger.info(f'Starting script')

7. 总结

本文重点介绍了在Python中如何使用Logging模块来优雅地创建日志并进行相应的配置管理。

您学废了吗?

在这里插入图片描述
关注公众号《AI算法之道》,获取更多AI算法资讯。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: logging模块Python标准库一个模块,用于记录程序运行时的日志信息。它提供了一种灵活的方式来控制日志记录的级别、格式和输出目标,可以将日志信息输出到控制台、文件、网络等不同的位置。使用logging模块可以帮助我们更好地理解程序的运行情况,快速定位问题并进行调试。在使用logging模块时,我们需要定义一个Logger对象,然后使用它来记录日志信息。Logger对象可以设置多个Handler对象,每个Handler对象可以设置不同的日志级别和输出目标。日志级别包括DEBUG、INFO、WARNING、ERROR和CRITICAL五个级别,级别越高,记录的信息越重要。在记录日志信息时,我们可以使用不同的格式化字符串来控制日志信息的输出格式,例如时间、级别、模块名、函数名等。除了基本的日志记录功能外,logging模块还提供了一些高级功能,例如日志回滚、日志过滤、日志轮换等,可以根据实际需求进行配置。 ### 回答2: logging模块Python内置的一个用于输出日志信息的模块,通过它我们可以记录程序运行时产生的各种信息,帮助我们了解程序运行过程的动态情况,有助于快速排查问题和系统优化。 logging模块的主要特点: 1.提供了5种不同的日志级别控制,从低到高分别是DEBUG、INFO、WARNING、ERROR、CRITICAL,不同级别的日志信息可以按照需求进行输出和记录。 2.可以灵活配置日志的输出位置和格式,包括控制台输出、文件输出和邮件输出等,还可以通过配置格式化器进行日志信息格式化。 3.支持输出、记录异常信息及堆栈信息等,便于排查问题。 以下是logging模块的一些常用方法及用法: 1. basicConfig():进行一些基本配置,如日志级别、输出格式、输出位置等,通常在程序入口处调用。 2. getLogger():获取一个logger实例,可以用来输出日志信息,常用于创建模块级别的日志记录器。 3. setLevel():设置日志级别,只有比设置级别高的日志才会输出。 4. addHandler():添加处理器,将日志信息发送到指定的输出位置,比如文件、控制台等。 5. Formatter():定义日志信息的格式化方式,可以定义不同的格式化字符串实现不同的输出格式。 6. 异常处理:可以使用try-except语句结合logging模块来记录异常信息及堆栈信息,方便排查问题。 7. 多模块日志处理:使用getLogger()方法可以创建多个记录器,为不同的模块或功能区分开来,方便排查问题。 总之,logging模块Python非常有用的一个模块,它可以帮助我们记录程序运行的各种信息,并提供各种定制化的输出方式,有助于提高代码的可读性和可维护性,快速排查问题。同时,也要注意在实际使用避免频繁输出日志信息导致程序性能下降。 ### 回答3: Pythonlogging模块一个优秀的记录日志的方式,可以将程序任何需要记录的信息输出到特定的位置,如控制台、文件或者网络。logging模块提供了强大的日志功能,可以将输出日志进行分级、格式化、过滤、存储等多种功能,可以让开发者方便地实现程序日志输出。下面将对logging模块的详细使用进行介绍。 logging模块的主要概念包括Logger、Handler、Formatter。Logger表示一个日志记录器对象,可以设定日志记录级别、输出地点和格式;Handler表示在哪里输出日志,不同Handler可以输出到不同位置;Formatter表示日志输出的格式。 使用logging模块记录日志需要以下步骤: 1. 创建一个Logger对象,用于记录日志信息。Logger对象可以指定名字,如果不指定,会使用rootLogger。 ```python import logging logger = logging.getLogger("mylogger") ``` 2. 设置Logger的级别,只有高于该级别的日志才会输出。默认级别为warning。 ```python logger.setLevel(logging.DEBUG) ``` 3. 创建Handler对象,用于将日志信息输出到指定位置。常用的Handler有StreamHandler(输出到控制台)、FileHandler(输出到文件)、HTTPHandler(输出到网络)等。 ```python stream_handler = logging.StreamHandler() file_handler = logging.FileHandler("log.txt") ``` 4. 设置Handler的级别,如果不设置,默认级别为warning。 ```python stream_handler.setLevel(logging.INFO) file_handler.setLevel(logging.ERROR) ``` 5. 创建Formatter对象,用于确定日志信息的输出格式。 ```python formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') stream_handler.setFormatter(formatter) file_handler.setFormatter(formatter) ``` 6. 将Handler添加到Logger对象。 ```python logger.addHandler(stream_handler) logger.addHandler(file_handler) ``` 7. 使用Logger对象记录日志。 ```python logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message') ``` 日志级别从高到低为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET。 最后,logging模块还可以进行日志的过滤、日志的旋转等操作,可以根据实际需求进行设置。总的来说,logging模块Python程序提供了一种方便、灵活的日志记录方式,可以帮助开发者更好地了解程序的运行状态,方便地进行调试和问题排查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值