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中为记录器设置格式化程序,而不是为处理程序设置格式化程序_Python_Logging - Fatal编程技术网

在python中为记录器设置格式化程序,而不是为处理程序设置格式化程序

在python中为记录器设置格式化程序,而不是为处理程序设置格式化程序,python,logging,Python,Logging,我总是想知道为什么在Python中使用dict config时,我不能按记录器设置格式化程序,而不是按处理程序设置格式化程序 如果我有以下配置: “格式化程序”:{ “冗长的”:{ “格式”:“%(levelname)s%(asctime)s%(消息)s” }, “简单”:{ “格式”:“%(levelname)s%(消息)s” }, }, “处理程序”:{ “stdout”:{ “级别”:“调试”, 'class':'logging.StreamHandler', }, } 为什么我不能在控

我总是想知道为什么在Python中使用dict config时,我不能按记录器设置格式化程序,而不是按处理程序设置格式化程序

如果我有以下配置:

“格式化程序”:{
“冗长的”:{
“格式”:“%(levelname)s%(asctime)s%(消息)s”
},
“简单”:{
“格式”:“%(levelname)s%(消息)s”
},
},
“处理程序”:{
“stdout”:{
“级别”:“调试”,
'class':'logging.StreamHandler',
},
}
为什么我不能在控制台中设置一个日志日志详细,在控制台中设置另一个日志简单?我想这样做:

“应用程序预订”:{
'handlers':['stdout'],
“格式化程序”:“简单”
},
“应用程序管理”:{
'handlers':['stdout'],
“格式化程序”:“详细”
},
我不想编写两个不同的处理程序,因为两个应用程序都使用相同的处理程序控制台


我错过什么了吗?对于这个简单的需求,有什么解决方案吗?

您是正确的,这不是日志模块的工作方式。“两个应用程序都使用相同的处理程序-控制台”,这并不完全正确;格式化程序是处理程序的属性,因此根据定义,您需要两个不同的处理程序。为什么创建两个具有不同格式的处理程序是一个问题?从语义上讲,处理程序处理日志,格式化是处理的一部分。它以这种方式工作的原因是,如果我创建了一个记录器,您就不会受到我想要的格式化方式的约束。您可以挂接处理程序,并根据需要处理日志,而不管我如何格式化它们。