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()
将允许您直接在处理程序的定义中设置级别(实际上更易于阅读)。