Python记录完成/失败消息

时间:2013-05-02 13:33:39

标签: python logging

使用Python logging库时,标准方法就是写一些这样的消息:

logging.info("All right")

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

Some long computing...    [done]

Some long computing...    [fail]

我该如何解决这个问题?

TOTAL:

确定。这是可能的,但仅限于下一行。对于同一行中的输出成功消息,您必须使用其他工具(可能是自定义),而不是logging Python库。

4 个答案:

答案 0 :(得分:3)

听起来这可能会帮助你。

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错误消息。

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

答案 1 :(得分:1)

你可以试试如下吗?实际上我无法理解你的确切问题。

#!/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)

或者

logging.info('Some long computation [%s]' % status_fail)

答案 2 :(得分:1)

显而易见的解决方案是在您知道您的流程是否成功后才记录该行。我接受你的问题,虽然你想为用户提供一些输出,以使你的计算过程显而易见。

据我所知,使用python日志记录模块是不可能做到你想要的,因为它本身就是面向自然界的。想象一下,您将这个发送到系统日志服务器,服务器将如何理解这两个文本消息属于一起?此外,服务器还需要保持状态,这通常是我们不想要的。

放弃记录模块而不是简单的打印语句,或者在计算完成后记录日志。

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

答案 3 :(得分:1)

日志记录并不意味着用作进度UI ...无论是否配置了日志记录,您的程序都应该以相同的方式工作,即使将详细程度设置为最小值也是如此。如果要将某些内容打印到控制台,请使用print而不是记录。