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是否可以在没有INFO:root的情况下记录输出_Python_Logging - Fatal编程技术网

python是否可以在没有INFO:root的情况下记录输出

python是否可以在没有INFO:root的情况下记录输出,python,logging,Python,Logging,我使用带有默认设置的Python日志框架。 出于某些数据比较原因:我必须将日志与其他数据输出进行比较。 但是python日志以默认值开头,类似于: INFO:root:post params in transmitter 我是否可以在不使用INFO:root:的情况下设置python日志输出,如: post params in transmitter 只有我自己的日志 太多了 使用一个。当然可以。您可以随时将格式设置为WAT: format: '%(message)s' 像这样: logg

我使用带有默认设置的Python日志框架。 出于某些数据比较原因:我必须将日志与其他数据输出进行比较。 但是python日志以默认值开头,类似于:

INFO:root:post params in transmitter
我是否可以在不使用
INFO:root:
的情况下设置python日志输出,如:

post params in transmitter
只有我自己的日志


太多了

使用一个。

当然可以。您可以随时将格式设置为WAT:

format: '%(message)s'
像这样:

logging.basicConfig(format='%(message)s', ...)

有关更多信息,请参阅文档:

您真的不需要进入删除信息的word。(当你的代码变得更加混乱,你将使用更多的东西而不仅仅是调试异常等信息时,它将真正帮助你)

如果您想将您的数据与该数据进行比较,您可以做一些事情,比如跳过前10个字符(信息:ROOT:),然后做任何您想做的事情。嗯,像这样的:

f = open("my.log","a+")
lines = f.readlines()
for line in lines:
    if(line[10:] ==  my_output):
           do_whatever_you_feel_like()
那些“INFO:…”或“DEBUG:…”出现在那里,因为某些处理程序定义了它们。我猜:默认处理程序仍然存在

您可以在创建logger.handlers之后查看它

logger = logging.getLogger()
logger.handlers = [] # This is the key thing for the question!

# Start defining and assigning your handlers here
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
此外,您还可以覆盖该默认处理程序的格式:

if (len(logger.handlers) > 0): # Check here whatever. Or try/except. You get the idea...
    formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
    logger.handlers[0].setFormatter(formatter)
我不是Python专家,所以也许有更好的方法来删除甚至不创建默认处理程序,但这对我来说非常有效


注意:如文档中所述,.basicConfig对于简单的记录器非常有用。如果您有多个具有多种格式的流,据我所知,它无法工作,您需要使用自定义处理程序。

From:INFO:root:post-params-in-transmitter to:post-params-in-transmitter我已设置python格式
format=“”
logging.basicConfig(format=format)
但仍然有信息:root before是的,这种方法是有效的。但是比较是由其他人做的,所以他希望我给他一个没有信息的日志:root。另一种选择是编写更多的代码来删除前10个charbasic配置本身并不是为我做的,而是使现有的处理程序不稳定
if (len(logger.handlers) > 0): # Check here whatever. Or try/except. You get the idea...
    formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
    logger.handlers[0].setFormatter(formatter)