logging的用法指南

一、基本使用

  1. 导入 logging 模块

在 Python 脚本开头导入logging模块:

 

import logging

  1. 配置日志记录

通过basicConfig方法进行简单配置,例如设置日志级别、输出格式和输出目标(默认为控制台):

 

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

这里设置日志级别为INFO,意味着只会记录INFO及以上级别的日志(INFO、WARNING、ERROR、CRITICAL)。格式中%(asctime)s表示时间,%(levelname)s是日志级别,%(message)s为日志信息。

3. 记录日志

使用不同级别的日志记录函数:

 

logging.debug('这是一条调试信息')

logging.info('这是一条普通信息')

logging.warning('这是一条警告信息')

logging.error('这是一条错误信息')

logging.critical('这是一条严重错误信息')

由于之前设置日志级别为INFO,debug级别的日志不会被记录输出。

二、日志级别

Python 的logging模块定义了以下几个日志级别,按严重程度从低到高排列:

  • DEBUG:用于调试目的,记录详细信息,帮助开发者排查问题。
  • INFO:用于记录程序正常运行的关键信息,如某个功能开始执行或执行完成。
  • WARNING:表示可能存在问题,但程序仍可继续运行,如资源即将耗尽等情况。
  • ERROR:记录程序发生错误的信息,此时程序可能部分功能无法正常运行。
  • CRITICAL:表示发生了严重错误,程序可能无法继续运行,如系统崩溃等情况。

三、配置文件

为了更灵活地配置日志,可使用配置文件。常见的配置文件格式有JSON、YAML和ini,以ini格式为例:

  1. 创建logging.ini文件
 

[loggers]

keys=root

[handlers]

keys=consoleHandler

[formatters]

keys=simpleFormatter

[logger_root]

level=INFO

handlers=consoleHandler

[handler_consoleHandler]

class=StreamHandler

level=INFO

formatter=simpleFormatter

args=(sys.stdout,)

[formatter_simpleFormatter]

format=%(asctime)s - %(levelname)s - %(message)s

datefmt=

此配置文件设置了根日志记录器,使用StreamHandler将日志输出到标准输出(控制台),并定义了日志格式。

2. 在 Python 脚本中加载配置文件

 

import logging

import logging.config

logging.config.fileConfig('logging.ini')

logger = logging.getLogger()

logger.info('使用配置文件记录的日志')

四、自定义日志记录器

  1. 创建自定义日志记录器
 

import logging

# 创建一个名为'my_logger'的日志记录器

logger = logging.getLogger('my_logger')

logger.setLevel(logging.DEBUG)

# 创建一个控制台处理器并设置级别

ch = logging.StreamHandler()

ch.setLevel(logging.DEBUG)

# 创建一个格式化器并添加到处理器

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

ch.setFormatter(formatter)

# 将处理器添加到日志记录器

logger.addHandler(ch)

# 记录日志

logger.debug('这是自定义日志记录器的调试信息')

  1. 日志记录器层级关系

日志记录器具有层级关系,通过点号分隔命名。例如,parent.child,child日志记录器会继承parent日志记录器的设置,除非在child日志记录器中重新配置。这有助于组织和管理不同模块或功能的日志记录。

五、日志输出到文件

  1. 简单配置输出到文件

修改basicConfig配置,添加filename参数:

 

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', filename='app.log')

这样日志就会输出到app.log文件中,而非控制台。

2. 使用文件处理器

也可通过创建FileHandler实现更灵活的文件日志记录:

 

import logging

logger = logging.getLogger()

logger.setLevel(logging.INFO)

# 创建一个文件处理器

fh = logging.FileHandler('app.log')

fh.setLevel(logging.INFO)

# 创建一个格式化器并添加到处理器

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

fh.setFormatter(formatter)

# 将处理器添加到日志记录器

logger.addHandler(fh)

logger.info('这是输出到文件的日志')

通过合理运用 Python 的logging模块,能够高效地记录程序运行时的各种信息,为程序的调试、维护和监控提供有力支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值