《Python内置模块009:logging用于实现日志记录的模块》

logging:用于实现日志记录的模块

logging模块是Python标准库中用于记录日志的模块。它提供了灵活的日志记录系统,允许开发者在应用程序中记录各种级别的日志消息,如调试信息、警告、错误等。logging模块提供了以下主要组件:

  1. Loggers:日志记录器,用于暴露应用程序代码能直接使用的接口。
  2. Handlers:处理器,用于将日志记录发送到指定的目的地,如文件、终端或网络套接字。
  3. Formatters:格式化器,用于指定日志记录的输出格式。

一、常用方法

logger.debug(msg, *args, kwargs):

用于记录调试信息,通常用于诊断问题。只有在日志级别设置为DEBUG或更低时才会输出。

logger.info(msg, *args, kwargs):

用于记录一般信息,通常用于确认程序按预期工作。只有在日志级别设置为INFO或更低时才会输出

logger.warning(msg, *args, kwargs):

用于记录警告信息,表示程序遇到了一些小问题,但仍然可以继续运行。只有在日志级别设置为WARNING或更低时才会输出。

logger.error(msg, *args, kwargs):

用于记录错误信息,表示程序遇到了严重的问题,可能无法继续运行。只有在日志级别设置为ERROR或更低时才会输出。

logger.critical(msg, *args, kwargs):

用于记录严重错误信息,表示程序遇到了非常严重的问题,通常会导致程序终止。只有在日志级别设置为CRITICAL时才会输出。

logger.setLevel(level):

用于设置日志记录的最低严重级别,低于此级别的日志信息将被忽略。例如,设置为logging.INFO后,DEBUG级别的信息将不会被记录。

logger.addHandler(hdlr):

用于给logger添加一个处理器(handler),处理器决定日志信息输出的位置,如控制台、文件等。

logger.removeHandler(hdlr):

用于从logger中移除指定的处理器。

logger.exception(msg, *args, kwargs):

专门用于记录异常信息,通常在异常处理的except块中使用,它会自动记录异常的堆栈信息。

二、使用案例


import logging
import os

# 确保日志目录存在
os.makedirs('./tmp/', exist_ok=True)

# 创建一个logger
logger = logging.getLogger('example_logger')
logger.setLevel(logging.DEBUG)

# 创建一个处理器handler,用于将日志输出到文件
file_handler = logging.FileHandler('./tmp/logging_example.log')
file_handler.setLevel(logging.DEBUG)

# 创建一个格式器formatter,并将其添加到处理器handler中
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 将处理器添加到logger中
logger.addHandler(file_handler)

# logging模块中的常用方法函数
logger.debug('这是一个调试信息')   # 用于调试
logger.info('这是一个信息')      # 用于普通信息输出
logger.warning('这是一个警告')   # 用于警告信息
logger.error('这是一个错误')     # 用于错误信息
logger.critical('这是一个严重错误') # 用于严重错误信息

# 读取日志文件内容以便展示
with open('./tmp/logging_example.log', 'r') as file:
    log_content = file.read()

print(log_content)



# 模拟一个异常并记录
try:
    1 / 0
except ZeroDivisionError:
    logger.exception('这是一个异常信息')

# 读取日志文件内容以便展示
with open('./tmp/logging_methods_example_with_code.log', 'r') as file:
    log_content = file.read()

print(log_content)

三、输出结果

2024-10-31 08:18:24,894 - example_logger - DEBUG - 这是一个调试信息
2024-10-31 08:18:24,905 - example_logger - INFO - 这是一个信息
2024-10-31 08:18:24,993 - example_logger - WARNING - 这是一个警告
2024-10-31 08:18:25,097 - example_logger - ERROR - 这是一个错误
2024-10-31 08:18:25,108 - example_logger - CRITICAL - 这是一个严重错误


Traceback (most recent call last):
  File "<string>", line 32, in <module>
ZeroDivisionError: division by zero

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大大大钢琴

喜欢!就请他吃3块钱好吃的吧!

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

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

打赏作者

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

抵扣说明:

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

余额充值