python logging模块的使用总结


Python的logging模块是一个用于记录日志信息的标准模块。它提供了一种灵活的方式来记录错误信息、调试信息和其他有用的日志数据。

1 简单使用logging记录日志

logging是Python的标准库之一,无需额外安装。您可以直接在Python代码中使用logging模块来记录日志。
这里日志默认是打印到控制台中的。

import logging  
logging.basicConfig(level=logging.DEBUG)
logging.debug('这是一个调试信息')
logging.info('这是一个一般信息')
logging.warning('这是一个警告信息')
logging.error('这是一个错误信息')
logging.critical('这是一个严重错误信息')

2 实现自定义logger

自定义logger有以下几个步骤

  • 创建一个logger
  • 创建一个handler
  • 定义handler的输出格式
  • 给logger添加handler,可以添加多个,例如再额外建立一个控制台的handler,就可以同时输出日志到控制台和日志文件中
  • 使用自定义logger
import logging  
  
# 1.创建一个logger  
logger = logging.getLogger('my_logger')  
logger.setLevel(logging.DEBUG)  
# 2.创建一个handler,用于写入日志文件  
fh = logging.FileHandler('my_log.log')  
# 3.定义handler的输出格式  
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
fh.setFormatter(formatter)  
# 4.给logger添加handler  
logger.addHandler(fh)  
  
# 5.使用自定义logger记录日志  
logger.info('这是一条info级别的日志。')  
logger.debug('这是一条debug级别的日志。')

在这个例子中,我们使用了以下日志格式:

  • %(asctime)s:记录日志的时间,格式为2023-07-07 10:15:30,123(包含时间戳和微秒)。
  • %(name)s:记录logger的名称。
  • %(levelname)s:记录日志级别(如DEBUG,INFO等)。
  • %(message)s:记录日志消息。
    你可以根据自己的需要调整这个格式。例如,如果你想要移除时间戳,可以将格式改为’%(name)s - %(levelname)s - %(message)s’。

3 根据日志文件大小分割日志

import logging  
from logging.handlers import RotatingFileHandler  
  
# 创建一个logger  
logger = logging.getLogger('my_logger')  
logger.setLevel(logging.DEBUG)  
  
# 创建一个RotatingFileHandler实例,设置日志文件名和最大大小  
handler = RotatingFileHandler('my_log.log', maxBytes=1024*1024, backupCount=5)  # 1MB, 5 files  
  
# 定义handler的输出格式  
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
handler.setFormatter(formatter)  
  
# 给logger添加handler  
logger.addHandler(handler)  
  
# 记录一条日志,这将触发日志文件的创建和分割  
logger.info('这是一条info级别的日志。')

在这个例子中,日志文件my_log.log的最大大小被设置为1MB。当日志文件达到这个大小时,它将自动创建一个新的日志文件,并继续写入。已创建的日志文件将按照时间顺序命名,例如my_log.log.1,my_log.log.2等。最多保留5个备份文件。

4.根据日期对日志文件进行分割

import logging  
from logging.handlers import TimedRotatingFileHandler  
  
# 创建一个logger  
logger = logging.getLogger('my_logger')  
logger.setLevel(logging.DEBUG)  
  
# 创建一个TimedRotatingFileHandler实例,设置日志文件名和时间间隔  
handler = TimedRotatingFileHandler('my_log.log', when='midnight')  # midnight表示每天午夜进行一次日志切割  
  
# 定义handler的输出格式  
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
handler.setFormatter(formatter)  
  
# 给logger添加handler  
logger.addHandler(handler)  
  
# 记录一条日志,这将触发日志文件的创建和分割  
logger.info('这是一条info级别的日志。')

5 使用logging模块进行日志记录时,需要注意以下几点:

  • 日志级别设置:logging模块提供了多种日志级别,如DEBUG、INFO、WARNING、ERROR和CRITICAL等。在设置日志级别时,应该考虑所记录的信息量和日志文件大小。通常,DEBUG级别的日志包含大量信息,可能会导致日志文件过大。而CRITICAL级别的日志则可能包含较少的信息。因此,需要根据实际需求选择适当的日志级别。
  • 日志文件名重复覆盖问题:如果创建的日志文件名与已有的文件名重复,会导致历史文件被覆盖。因此,在命名日志文件时,应该考虑如何避免这种情况的发生。一种方法是使用时间戳等唯一标识符作为文件名的后缀,另一种方法是使用RotatingFileHandler来自动分割日志文件。
  • 日志格式设置:logging模块允许自定义日志格式,包括时间戳、日志级别、日志消息等。可以根据需要设置适当的日志格式,以便更好地管理和查看日志文件。
  • 日志记录器(logger)与处理程序(handler)的关系:logger是用来记录日志的对象,handler则是用来处理日志的对象。一个logger可以拥有多个handler,每个handler可以设置不同的日志级别和输出目标。在设置handler时,应该考虑如何将不同类型的日志消息发送到不同的输出目标,以便更好地管理和查看不同类型的日志。
  • 日志模块与其他模块的集成:logging模块可以与其他Python模块集成,如MySQL、Redis等。在使用logging模块记录这些模块的日志时,应该了解如何正确地设置和使用这些模块的日志级别和输出目标,以便更好地管理和查看这些模块的日志。
  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python logging 模块Python 标准库中的一个模块,用于记录程序运行时的日志信息。使用 logging 模块可以方便地记录程序的运行状态,以便在出现问题时进行排查。 使用 logging 模块需要先导入模块,然后创建一个 logger 对象,设置日志级别和输出格式,最后在程序中使用 logger 对象记录日志信息。 下面是一个简单的示例代码: ``` import logging # 创建 logger 对象 logger = logging.getLogger('mylogger') # 设置日志级别 logger.setLevel(logging.DEBUG) # 创建一个输出到控制台的 handler console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) # 创建一个输出到文件的 handler file_handler = logging.FileHandler('mylog.log') file_handler.setLevel(logging.INFO) # 设置输出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(formatter) file_handler.setFormatter(formatter) # 将 handler 添加到 logger 对象中 logger.addHandler(console_handler) logger.addHandler(file_handler) # 记录日志信息 logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message') ``` 在上面的示例代码中,我们创建了一个名为 `mylogger` 的 logger 对象,并设置了日志级别为 `DEBUG`。然后创建了一个输出到控制台的 handler 和一个输出到文件的 handler,并设置了输出格式。最后将这两个 handler 添加到 logger 对象中。 在程序中使用 logger 对象记录日志信息时,可以使用 `debug()`、`info()`、`warning()`、`error()`、`critical()` 等方法,分别对应不同的日志级别。例如,`logger.debug('debug message')` 就会记录一条 DEBUG 级别的日志信息。 以上就是 Python logging 模块的基本使用方法。 ### 回答2: Pythonlogging模块是一个强大的日志记录工具。它提供了一种灵活的方式来在程序中记录日志,以便在程序运行过程中获取有用的信息和诊断数据。下面是如何使用Python logging模块的基本步骤。 1. 导入logging模块: ```python import logging ``` 2. 配置日志记录器: ```python logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s', filename='app.log', filemode='w') ``` 在配置方法中,level参数设置日志级别,可选项包括DEBUG、INFO、WARNING、ERROR和CRITICAL。format参数定义日志记录的格式,其中asctime表示日志记录的时间,levelname表示日志级别,message表示要记录的消息。filename参数指定日志文件的名称,filemode参数定义日志写入模式,例如'w'表示写入模式,'a'表示追加模式。 3. 记录日志: ```python logging.debug('Debug message') logging.info('Info message') logging.warning('Warning message') logging.error('Error message') logging.critical('Critical message') ``` 使用logging模块中的不同方法来记录不同级别的日志。 4. 进一步配置日志记录器: ```python logger = logging.getLogger('my_logger') logger.setLevel(logging.DEBUG) ``` 如果需要更多的配置选项,可以创建一个logger对象,并使用setLevel方法设置日志级别。 通过这些步骤,可以在程序中使用logging模块记录日志。这样,可以根据需要记录不同级别的日志,并通过指定的格式将日志写入到文件中。日志记录对于程序的调试和问题排查非常有帮助。 ### 回答3: Python中的logging模块是一个内置的日志记录工具。它提供了一种简单而灵活的方式来记录运行时的信息,帮助我们调试程序和追踪错误。下面是使用logging模块的一些主要步骤: 1. 导入logging模块: ```python import logging ``` 2. 设置日志记录的级别: ```python logging.basicConfig(level=logging.DEBUG) ``` 这里设置的是日志记录的最低级别为DEBUG,即记录所有级别的日志信息。还有其他的级别可选择,如:INFO、WARNING、ERROR等,可以根据需要设置。 3. 编写日志信息: ```python logging.debug("This is a debug message") logging.info("This is an info message") logging.warning("This is a warning message") logging.error("This is an error message") ``` 4. 输出日志信息: 日志信息可以输出到控制台、文件或其他地方。默认情况下,日志信息会输出到控制台。 ```python logging.debug("This is a debug message") ``` 可以通过配置logging模块将日志信息输出到文件。 ```python logging.basicConfig(filename='example.log', level=logging.DEBUG) ``` 这里将日志信息输出到文件"example.log"中。 以上是使用logging模块的基本步骤。logging模块还支持更高级的用法,如添加时间戳、设置日志的格式等。可以通过查阅官方文档来了解更多关于logging模块的详细信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值