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

标签 python logging

我的日志记录代码如下:

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() got an unexpected keyword argument 'level'

最佳答案

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

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

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

关于Pythonlogging.basicConfig为处理程序设置不同的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52644217/

相关文章:

go - 将 Golang 日志输出设置为文件不会在函数声明之外持续存在

java - 过滤 Apache Spark Log4J 消息以仅保留包含特定字符串的消息

python - 如何使用Python3查找日期列表中的所有日期

python - 识别 django post_save 信号中更改的字段

python - logging.handlers : How to rollover after time or maxBytes?

python - python 日志记录处理程序中 setLevel 的意义何在?

python - Keras fit_generator 引发 ValueError 因为多个输入不正确

python - "is"运算符对整数的行为异常

python - pytorch中动态添加隐藏单元

python - 如何获取 Python 日志模块当前正在登录的文件?