【Python】logging模块函数详解和示例

在Python中,LOGGER通常是指一个用于记录日志的模块或对象。它可以帮助你在程序中跟踪和记录事件,以便于调试、错误跟踪和日志分析。Python的标准库中包含了一个名为logging的模块,它提供了一个灵活且功能强大的日志记录系统。本文对相应的函数进行详解和示例,以帮助大家理解和使用。


首先,需要导入logging模块,以便在你的代码中使用它。

import logging

日志级别

在logging模块中,你可以创建一个或多个日志记录器,然后将它们配置为记录不同级别的消息。
有五个预定义的日志级别,从低到高分别是:DEBUG、INFO、WARNING、ERROR、CRITICAL。每个级别都对应着不同的信息类型和严重程度。

DEBUG

这是最低的日志级别,通常用于输出最详细的信息,包括程序的内部运作细节。这种级别通常只在诊断问题时使用,因为在生产环境中可能会产生大量的日志输出。

INFO

这个级别的日志用于输出一般信息,比如程序的主要事件或状态改变。这是了解系统运行状态的有用工具。

WARNING

当发生可能的问题或潜在的错误时,会使用此级别的日志。例如,如果磁盘空间不足,可能会记录一个警告。虽然这种情况可能会导致问题,但仍然允许程序继续运行。

ERROR

这个级别的日志用于输出错误信息,这些错误信息通常会导致程序的部分功能失效。例如,如果无法连接到数据库,可能会记录一个错误。

CRITICAL

这是最高的日志级别,用于输出极其严重的问题,这些问题可能会导致程序崩溃或无法正常运行。例如,内存溢出或操作系统崩溃等严重问题会记录为严重错误。

这些级别构成了一个大层次结构,意味着如果一个消息被标记为 INFO,那么它包括比它更低级别的所有消息(例如 DEBUG),但不包括比它更高的级别(例如 ERROR)。

你可以通过设置日志记录器的级别来控制哪些消息被记录下来。例如,如果将日志记录器的级别设置为 INFO,那么 INFO 和 DEBUG 级别的消息都会被记录下来,但 WARNING、ERROR 和 CRITICAL 级别的消息则不会。

logging.getLogger()

logging.getLogger() 是 Python 的 logging 模块中的一个函数,它用于获取或创建日志记录器对象。这个对象是用于处理和跟踪程序中事件(例如错误、警告、信息等)的工具。

logging.getLogger(name)

其中 name 是一个字符串,用于区分不同的日志记录器对象。
如果 name 参数为空字符串(""),那么将返回根日志记录器。
如果 name 参数为非空字符串,那么将返回一个具有该名称的日志记录器,
如果该日志记录器不存在,则创建一个新的日志记录器。
import logging

# # 创建一个logger
logger = logging.getLogger('my_logger')

logger.setLevel()

logger.setLevel() 是 Python 的 logging 模块中的一个方法,用于设置 logger 的日志级别。
日志级别决定了 logger 是否记录消息。
日志级别从低到高分别是:DEBUG、INFO、WARNING、ERROR、CRITICAL。如果 logger 的级别设置为 DEBUG,那么它就会记录 DEBUG 及其以上级别的所有消息;如果设置为 INFO,那么就记录 INFO、WARNING、ERROR 和 CRITICAL 消息。依此类推。

import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)  # 设置日志级别为DEBUG

logging.FileHandler()

logging.FileHandler() 是 Python 的 logging 模块中的一个类,它用于将日志消息写入到文件中。你可以使用这个类来创建一个特定的文件处理器,从而将日志消息输出到一个指定的文件中。

logging.FileHandler() 接收两个参数:

filename:要写入的文件名。也可以是文件路径,例如 '/path/to/logfile.log'。
mode:文件打开模式。默认为 'a'(追加模式),也可是 'w'(写入模式)覆盖原有内容,或者 'r'(读取模式)读取原有内容。

logging.StreamHandler()

logging.StreamHandler() 是 Python 的 logging 模块中的一个类,它用于将日志消息输出到指定的流(默认为 sys.stderr)。你可以使用这个类来创建一个特定的流处理器,从而将日志消息输出到特定的流中。

logging.StreamHandler() 不需要任何参数。

logging.Formatter()

logging.Formatter() 是 Python 的 logging 模块中的一个类,它用于定义日志消息的格式。你可以使用这个类来创建一个特定的格式化器,从而定义你希望看到的日志消息格式。

logging.Formatter() 可以接收以下参数:

format:格式字符串,用于定义日志消息的格式。可以包含一些特殊的格式化指令,例如 %m(消息文本)、%n(换行符)、%t(时间戳)等。
datefmt:时间戳的格式化字符串,用于定义时间戳的格式。如果不提供该参数,默认使用 ISO8601 格式。
style:字符串格式化操作符,默认为 '{'(字典样式)和 'r'(原始字符串样式)之一。如果设置为 '{',则可以使用诸如 {asctime} 之类的占位符。如果设置为 'r',则消息将被格式化为原始字符串。

logger.addHandler()

logger.addHandler() 是 Python 的 logging 模块中的一个方法,它用于将一个日志处理器(handler)添加到特定的 logger 中。这个方法使得 logger 能够将日志消息发送到特定的处理器中,以便进行记录、输出或其他处理。

logger.addHandler() 方法接收一个 logging.Handler 对象作为参数。在 Python 的 logging 模块中,有许多不同类型的处理器,包括 StreamHandler(输出到控制台)、FileHandler(输出到文件)、RotatingFileHandler(输出到轮转文件)等等。

运行示例

import logging

# 创建一个logger
logger = logging.getLogger('my_logger')

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

# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('my_logger.log')

# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()

# 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 给handler设置输出格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)

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

# 记录一条日志
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

在这个示例中,我们创建了一个 Formatter,它将日志消息的格式定义为包含时间戳、logger名称、日志级别和消息文本的字符串。然后,我们将这个 Formatter 应用到了一个 StreamHandler 上,该 handler 将日志消息输出到控制台。最后,我们记录了一些日志消息,并使用这个 Formatter 对它们进行了格式化。

在这里插入图片描述

**输出内容:**在终端输出相应信息,并在文件夹中创建了一个Logging_ceshi.log的文件,文件内容为:
在这里插入图片描述

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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: Python中的logging模块是一个优秀的记录日志的方式,可以将程序中任何需要记录的信息输出到特定的位置,如控制台、文件或者网络。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、付费专栏及课程。

余额充值