gpt4 book ai didi

python - 如何将 INFO 和 DEBUG 日志消息发送到 stdout 并将更高级别的消息发送到 stderr

转载 作者:IT老高 更新时间:2023-10-28 22:18:37 28 4
gpt4 key购买 nike

python 的日志记录模块是否有一种简单的方法可以将具有 DEBUG 或 INFO 级别的消息以及具有更高级别的消息发送到不同的流?

这是个好主意吗?

最佳答案

import logging
import sys

class LessThanFilter(logging.Filter):
def __init__(self, exclusive_maximum, name=""):
super(LessThanFilter, self).__init__(name)
self.max_level = exclusive_maximum

def filter(self, record):
#non-zero return means we log this message
return 1 if record.levelno < self.max_level else 0

#Get the root logger
logger = logging.getLogger()
#Have to set the root logger level, it defaults to logging.WARNING
logger.setLevel(logging.NOTSET)

logging_handler_out = logging.StreamHandler(sys.stdout)
logging_handler_out.setLevel(logging.DEBUG)
logging_handler_out.addFilter(LessThanFilter(logging.WARNING))
logger.addHandler(logging_handler_out)

logging_handler_err = logging.StreamHandler(sys.stderr)
logging_handler_err.setLevel(logging.WARNING)
logger.addHandler(logging_handler_err)

#demonstrate the logging levels
logger.debug('DEBUG')
logger.info('INFO')
logger.warning('WARNING')
logger.error('ERROR')
logger.critical('CRITICAL')

除了实现之外,我确实认为使用 python 中的日志记录工具输出到终端是一个好主意,特别是因为您可以添加另一个处理程序来额外记录到文件中。如果您将 stdout 设置为 INFO 而不是 DEBUG,您甚至可以在日志文件中包含用户通常不会看到的其他 DEBUG 信息。

关于python - 如何将 INFO 和 DEBUG 日志消息发送到 stdout 并将更高级别的消息发送到 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com