当前位置: 代码迷 >> python >> Python logging.basicConfig 为处理程序设置不同的级别
  详细解决方案

Python logging.basicConfig 为处理程序设置不同的级别

热度:43   发布时间:2023-07-16 09:51:17.0

我的日志记录有以下代码:

logging.basicConfig(
                    handlers=[
                        logging.FileHandler("log.txt", "w"),
                        logging.StreamHandler()
                    ],
                    format='%(levelname)s - %(asctime)s - %(message)s',
                    datefmt='%H:%M:%S',
                    level=logging.DEBUG)

我想为我的 2 个处理程序设置不同的级别。 但我真的想保持简单,我想用 basicConfig 来做到这一点。

有没有办法做到这一点?

我试过了,但失败了:

logging.basicConfig(
                    handlers=[
                        logging.FileHandler("log.txt", "w", level=logging.DEBUG),
                        logging.StreamHandler(level=logging.DEBUG)
                    ],
                    format='%(levelname)s - %(asctime)s - %(message)s',
                    datefmt='%H:%M:%S')

TypeError: init () 得到了一个意外的关键字参数 'level'

我认为您实际上不会在处理程序级别中实际使用DEBUG ,因为无论您是否将级别设置为DEBUG ,它们都会传递所有消息 (>= DEBUG )。 对于更高级别,为了说明目的,我将其称为level1level2 ,您可以这样做

h1 = logging.FileHandler(...); h1.setLevel(level1)
h2 = logging.StreamHandler(...); h2.setLevel(level2)

然后将handlers=[h1, h2]传递给basicConfig

  相关解决方案