那我来详细讲解一下python标准日志模块logging的使用方法的完整攻略。
logging模块简介
Python提供了一个标准的日志模块——logging模块,它用于记录信息以便进行调试、错误跟踪以及解决问题等。logging模块提供了标准的记录日志方式,可以把日志记录输出到文件或终端,还可以根据日志等级过滤不同级别的日志信息。
logging模块的基本用法
1.创建Logger对象
Logger对象是logging模块的核心,可以使用Logger对象记录日志。我们需要为应用程序创建一个Logger对象,并设置它的日志等级等参数。可以使用以下代码创建一个Logger对象:
import logging
logger = logging.getLogger('mylogger') # 创建一个Logger对象
logger.setLevel(logging.DEBUG) # 设置日志级别
上述代码中,我们使用logging.getLogger()
方法创建一个名为'mylogger'的Logger对象,并设置日志级别为DEBUG。
2.创建Handler对象
在使用Logger对象记录日志时,需要指定日志记录的输出位置,即log消息发送的目的地。这个目的地可以是标准输出终端、文件、电子邮件等。为了指定目的地,需要创建一个或多个Handler对象。可以使用以下代码创建一个Handle对象:
import logging
logger = logging.getLogger('mylogger') # 创建一个Logger对象
logger.setLevel(logging.DEBUG) # 设置日志级别
fh = logging.FileHandler('mylog.txt') # 创建一个Handler对象,将日志写入文件
fh.setLevel(logging.INFO) # 设置Handler对象的日志级别
logger.addHandler(fh) # 将Handler对象添加到Logger对象
上述代码中,我们使用logging.FileHandler()
方法创建一个FileHandler对象,将日志写入到'mylog.txt'文件中,并将FileHandler对象的日志级别设置为INFO。接着,我们使用Logger.addHandler()
方法把FileHandler对象添加到Logger对象中。
3. 记录日志
Logger对象有5个方法依次提供了不同级别的日志记录功能:
logger.debug()
:最详细的信息记录,通常只在调试阶段使用logger.info()
:详细程度仅次于debug记录logger.warning()
:当某些不期望发生但是不影响程序运行的情况出现时,建议使用warning级别的日志记录logger.error()
:当程序执行遇到可处理的异常错误时,建议使用error级别的日志记录logger.critical()
:当程序执行遇到严重错误时,建议使用critical级别的日志记录
可以使用以下代码记录日志:
import logging
logger = logging.getLogger('mylogger') # 创建一个Logger对象
logger.setLevel(logging.DEBUG) # 设置日志级别
fh = logging.FileHandler('mylog.txt') # 创建一个Handler对象,将日志写入文件
fh.setLevel(logging.INFO) # 设置Handler对象的日志级别
logger.addHandler(fh) # 将Handler对象添加到Logger对象
logger.debug('debug message') # 记录debug级别的日志
logger.info('info message') # 记录info级别的日志
logger.warning('warning message') # 记录warning级别的日志
logger.error('error message') # 记录error级别的日志
logger.critical('critical message') # 记录critical级别的日志
4.示例说明
示例1:将日志同时输出到文件和终端
import logging
logger = logging.getLogger('mylogger') # 创建一个Logger对象
logger.setLevel(logging.DEBUG) # 设置日志级别
# 创建一个Handle对象,将日志写入文件
fh = logging.FileHandler('mylog.txt')
fh.setLevel(logging.INFO)
# 创建一个Handle对象,将日志输出到终端
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# 配置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 将Handle对象添加到Logger对象
logger.addHandler(fh)
logger.addHandler(ch)
# 记录日志
logger.info('这是日志信息')
运行上述代码后,我们在终端和mylog.txt文件中都可以看到日志信息。
示例2:动态调整日志等级
import logging
logger = logging.getLogger('mylogger') # 创建一个Logger对象
logger.setLevel(logging.DEBUG) # 设置日志级别
# 创建一个Handle对象,将日志输出到终端
ch = logging.StreamHandler(level=logging.WARNING)
ch.setLevel(logging.WARNING)
# 此处先不添加Handle对象
# 记录日志
logger.debug('这是debug信息')
logger.info('这是info信息')
logger.warning('这是warning信息')
# 添加Handle对象
logger.addHandler(ch)
# 再次记录日志
logger.debug('这是debug信息')
logger.info('这是info信息')
logger.warning('这是warning信息')
运行上述代码后,我们可以看到在添加Handler之前,只有warning级别的日志信息被输出。而在添加Handler之后,所有日志信息都被输出到终端。
总结
使用logging模块可以很方便地记录日志信息并方便地进行查看和调试。本文简单介绍了logging模块基本使用方法以及两个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python标准日志模块logging的使用方法 - Python技术站