Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python logging.basicConfig为处理程序设置了不同的级别_Python_Logging - Fatal编程技术网

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

Python logging.basicConfig为处理程序设置了不同的级别,python,logging,Python,Logging,我的日志记录有以下代码: logging.basicConfig( handlers=[ logging.FileHandler("log.txt", "w"), logging.StreamHandler() ], format='%(levelname)s - %(asctime

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

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
)。对于更高级别,为了便于说明,我将其称为
level1
level2
,您可以这样做

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

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

是的,您可以将
level
参数传递给这两个处理程序。酷,这就是我的观点。我没有成功,发生了什么事?显示您尝试的代码和出现的错误。我更新了我的问题。您必须先创建处理程序,然后调用
。setLevel(level)
。相反,使用
logging.config.dictConfig()
将允许您直接在处理程序的定义中设置级别(实际上更易于阅读)。