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日志记录库时,标准方法就是编写如下消息: logging.info("All right") 但有时需要显示某些(长)任务的结果状态(在输出消息的主要部分后一段时间)。例如: Some long computing... [done] 或 我怎样才能解决这个问题 总数: 嗯。这是可能的,但只有在下一行。要在同一行中输出成功消息,您必须使用其他工具(可能是自定义工具),而不是日志记录Python库。您可以尝试以下方法吗?事实上,我不能完全理解你的问题 #!/usr/bi

当使用Python
日志记录
库时,标准方法就是编写如下消息:

logging.info("All right")
但有时需要显示某些(长)任务的结果状态(在输出消息的主要部分后一段时间)。例如:

Some long computing...    [done]

我怎样才能解决这个问题

总数:
嗯。这是可能的,但只有在下一行。要在同一行中输出成功消息,您必须使用其他工具(可能是自定义工具),而不是
日志记录
Python库。

您可以尝试以下方法吗?事实上,我不能完全理解你的问题

#!/usr/bin/python

status_success = "Done"
status_fail = "Fail"

import logging
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
"""
Do some computation here and based on that result display the below message
"""
logging.info('Some long computation [%s]' % status_success)


显而易见的解决方案是,只有在知道进程是否成功后才记录该行。不过,我认为您的问题是,您希望向用户提供一些输出,以表明您的计算过程正在工作

据我所知,使用python日志模块是不可能实现您想要的功能的,因为它本质上是面向行的。假设您将此消息发送到一个syslog服务器,服务器如何理解这两条文本消息属于同一个服务器?此外,服务器需要保持状态,这通常是我们不想要的

要么放弃日志模块而选择简单的打印语句,要么在计算完成后记录日志

print "Some long computation...",
res = compute()
print "res"

听起来这可能对你有所帮助

import logging

logging.basicConfig(format = "%(asctime)s - %(levelname)s - %(message)s", 
                    level = logging.DEBUG)

logging.info("Long Task is starting")
try:
    StartLongTaskFunction()
    logging.info("Long task finished")
except:
    logging.exception("Long task failed")
请注意,logging.exception()与logging.error()略有不同。在为logging.exception()添加日志条目之后,还会包含整个Python错误消息


如果要在TaskFunction中记录关键事件,也可以在此函数中插入日志项。即使您从单独的模块导入此函数,您仍然可以引用相同的日志文件。

日志记录并不打算用作进度UI。。。无论是否配置日志记录,甚至当详细度设置为最小值时,程序都应该以相同的方式工作。如果要将内容打印到控制台,请使用
print
而不是日志。

确定。我只是具体说明我的问题。问题是当您有一些长的计算,并且需要在显示消息的第一部分之前很久显示第二部分时,这是一个解决方案。但不太漂亮。我需要类似Debian bootlogd的输出。更好,但是在与基本消息相同的行中显示成功消息如何?您所说的“基本消息”和“成功消息”是什么意思?正如kll在下面指出的,在Python中登录是面向行的。如果要记录多个数据点,则需要将它们存储在脚本中的变量/对象中,并将它们全部输入到同一个日志条目中。本机不支持在日志记录中追溯更新以前输入的日志条目。谢谢。现在我明白了。
print "Some long computation...",
res = compute()
print "res"
import logging

logging.basicConfig(format = "%(asctime)s - %(levelname)s - %(message)s", 
                    level = logging.DEBUG)

logging.info("Long Task is starting")
try:
    StartLongTaskFunction()
    logging.info("Long task finished")
except:
    logging.exception("Long task failed")