Python中的logging.handlers:如何处理程序的输出和错误信息
发布时间:2023-12-11 16:37:41
在Python中,logging.handlers是logging模块的一个子模块,用于处理程序的输出和错误信息。
logging.handlers中包含了多种处理程序,可以用于将日志记录发送到不同的地方,如文件、终端、网络等。下面将介绍几种常用的处理程序,并提供相应的使用例子。
1. StreamHandler:将日志消息发送到终端。
import logging
from logging import StreamHandler
# 创建Logger对象
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)
# 创建StreamHandler对象
stream_handler = StreamHandler()
# 设置日志级别
stream_handler.setLevel(logging.INFO)
# 将StreamHandler添加到Logger对象中
logger.addHandler(stream_handler)
# 通过Logger对象输出日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
2. FileHandler:将日志消息记录到文件。
import logging
from logging import FileHandler
# 创建Logger对象
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)
# 创建FileHandler对象
file_handler = FileHandler('log.txt')
# 设置日志级别
file_handler.setLevel(logging.INFO)
# 将FileHandler添加到Logger对象中
logger.addHandler(file_handler)
# 通过Logger对象输出日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
3. RotatingFileHandler:根据文件大小自动轮转日志文件。
import logging
from logging import RotatingFileHandler
# 创建Logger对象
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)
# 创建RotatingFileHandler对象
rotating_file_handler = RotatingFileHandler('log.txt', maxBytes=1024, backupCount=3)
# 设置日志级别
rotating_file_handler.setLevel(logging.INFO)
# 将RotatingFileHandler添加到Logger对象中
logger.addHandler(rotating_file_handler)
# 通过Logger对象输出日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
4. SMTPHandler:发送日志消息到指定的email地址。
import logging
from logging.handlers import SMTPHandler
# 创建Logger对象
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)
# 创建SMTPHandler对象
smtp_handler = SMTPHandler(mailhost='smtp.example.com', fromaddr='sender@example.com', toaddrs=['recipient@example.com'])
# 设置日志级别
smtp_handler.setLevel(logging.ERROR)
# 设置邮件主题和发件人
smtp_handler.setFormatter(logging.Formatter('Subject: %(levelname)s - %(message)s'))
smtp_handler.setSubject('Error message')
# 将SMTPHandler添加到Logger对象中
logger.addHandler(smtp_handler)
# 通过Logger对象输出日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
以上是logging.handlers中几种常用的处理程序及其使用例子。通过使用不同的处理程序,可以实现将日志消息输出到不同的位置,方便程序的调试和错误追踪。根据实际需要,可以选择适合的处理程序,来满足程序日志输出的需求。
