Python日志处理模块logging用法解析

1. 简介

日志是一份记录程序运行时发生事件的记录。日志包含的信息可以用于调试、故障排除、性能分析等方面。Python中提供了logging模块,用于记录日志信息。logging可以发送日志到多种输出位置,例如文件、标准输出等,并且可以配置不同级别的日志输出。本文将详细介绍Python中的logging模块。

2. logging模块常用类

2.1 Logger类

Logger类是logging模块的核心,主要用于程序中记录日志信息。Logger实例是用来对具体的应用程序进行日志记录的,每个记录器可以有多个处理器(handler),每个处理器可以有多个日志过滤器(filter) 。Logger对应用程序提供了接口,应用程序可以通过Logger实例来完成自己想要的logging。

Logger类提供了如下方法:

Logger.setLevel(): 设置logger的级别

Logger.addHandler(): 为logger增加一个handler

Logger.debug(): 记录debug级别的日志

Logger.info(): 记录info级别的日志

Logger.warning(): 记录warning级别的日志

Logger.error(): 记录error级别的日志

Logger.critical(): 记录critical级别的日志

2.2 Handler类

Handler类是用来处理日志信息的,通过它可以将日志信息输出到控制台或者文件中。

Handler类提供了如下方法:

Handler.setLevel(): 设置handler的级别

Handler.setFormatter(): 设置输出格式

2.3 Formatter类

Formatter类是用来设置日志输出的格式。

Formatter类提供了如下方法:

Formatter.format(): 格式化日志记录

3. logging配置

logging可以通过以下方式进行配置:

通过代码配置

通过文件配置

3.1 通过代码配置

import logging

logger = logging.getLogger('mylogger')

logger.setLevel(logging.DEBUG)

# 输出到控制台的handler

ch = logging.StreamHandler()

ch.setLevel(logging.DEBUG)

# 输出到文件的handler

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

fh.setLevel(logging.WARNING)

# 设置输出格式

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

ch.setFormatter(formatter)

fh.setFormatter(formatter)

# 将handler添加到logger中

logger.addHandler(ch)

logger.addHandler(fh)

# debug级别的日志

logger.debug('debug message')

# info级别的日志

logger.info('info message')

# warning级别的日志

logger.warning('warning message')

# error级别的日志

logger.error('error message')

# critical级别的日志

logger.critical('critical message')

以上代码会将日志输出到控制台和文件中。日志级别为WARNING及以上级别的日志会输出到文件中,日志级别为DEBUG及以上级别的日志会输出到控制台和文件中。

3.2 通过文件配置

logging也可以通过文件配置,logging配置文件中可以包含多个handler和多个logger,每个logger可以有不同级别和不同的handler。

[loggers]

keys=root,sampleLogger

[handlers]

keys=consoleHandler,fileHandler

[formatters]

keys=sampleFormatter

[logger_root]

level=DEBUG

handlers=consoleHandler,fileHandler

[logger_sampleLogger]

level=DEBUG

handlers=consoleHandler

qualname=sampleLogger

propagate=0

[handler_consoleHandler]

class=StreamHandler

level=DEBUG

formatter=sampleFormatter

args=(sys.stdout,)

[handler_fileHandler]

class=FileHandler

level=WARNING

formatter=sampleFormatter

args=('myapp.log', 'w')

[formatter_sampleFormatter]

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

datefmt=%Y-%m-%d %H:%M:%S

以上代码定义了一个名为sampleLogger的logger,它的输出级别为DEBUG,并且只会将日志信息输出到控制台(consoleHandler);还定义了一个名为root的logger,它的输出级别为DEBUG,并且会将日志信息输出到控制台(consoleHandler)和文件(fileHandler)中。

以上是一个简化版的logging配置文件,实际使用中还可以配置更多的参数,例如过滤器、缓存等。

4. 总结

logging是Python中的一个重要模块,它提供了非常强大的日志功能。通过使用logging,我们可以轻松地记录程序中的各种事件及其发生的环境。在进行debug和故障排除时,日志信息的使用非常重要,因为它能够让我们更好地了解程序发生了什么,而不需要打断程序的执行。

本文对logging模块的常用类和配置进行了介绍,对想要深入了解logging的读者来说是一个不错的起点。

后端开发标签