python:修改模块中的日志级别



TLDR

如果模块使用

log.error("something happened")

我们希望看到这些日志,但作为警告,这样我们的净效果将与该模块使用相同

log.warning("something happened")

更多详细信息

我们使用aiokafka模块,当与confluent.cloud的连接出现问题时,该模块会记录错误。然而,这些都是暂时的问题,并且在一段时间后重新建立连接,因此我们更希望这些日志是警告,而不是错误。但我们不想丢失这些日志。

有没有一种方法可以修改这些日志记录;在飞行中";,更改他们的日志级别?我知道我可以

logger = logging.getLogger("aiokafka")
logger.setLevel(logging.CRITICAL)

但是所有的日志都会丢失。

您可以为记录器附加一个过滤函数,以降低级别。以下是一个可以用来构建的工作示例:

import logging
def downgrade_filter(record):
if record.levelno == logging.ERROR:
record.levelno = logging.WARNING
record.levelname = logging.getLevelName(logging.WARNING)
return True
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG, format='%(levelname)-8s|%(name)-8s|%(message)s')
logger = logging.getLogger('aiokafka')
logger.setLevel(logging.WARNING)
logger.addFilter(downgrade_filter)
logger.debug('This should not appear')
logger.info('This should not appear')
logger.warning('This should appear as a warning')
logger.error('This should appear as a warning, though logged as an error')
logger.critical('This should appear as a critical error')

运行时,应打印

WARNING |aiokafka|This should appear as a warning
WARNING |aiokafka|This should appear as a warning, though logged as an error
CRITICAL|aiokafka|This should appear as a critical error

(这是Python 3.x的最新版本)

相关内容

  • 没有找到相关文章

最新更新