在Python打印中添加日期时间戳

我正在尝试调试我依赖的大型库的行为,它通过其许多源文件使用散布(没有过多的)调试打印语句.麻烦的是,大多数(如果不是全部)这些调试打印语句都不包含日期/时间戳,因此很难将应用程序级别的故障与库代码本身内的故障相关联.

而不是修改怀疑涉及我所看到的故障的所有调试打印的源代码,我认为有可能暂时修补内置的Python打印“功能”,以便所有输出都以前缀为前缀时间戳.

自从我在使用Python 2.6环境中的built-in print is not a function以来,我不知道这是否可行.如果有人这样做或使用另一个钩子进入Python获得了类似的结果,那么我将非常感谢你的建议,甚至更好的解决这个问题的代码.

最佳答案
由于您无法覆盖写入功能(它是只读的),因此简单的猴子补丁可能如下所示(将时间戳附加到每个打印行):

old_f = sys.stdout
class F:
    def write(self, x):
        old_f.write(x.replace("\n", " [%s]\n" % str(datetime.now())))
sys.stdout = F()

一个例子看起来像这样:

>>> print "foo"
foo [2011-02-03 09:31:05.226899]

转载注明原文:在Python打印中添加日期时间戳 - 代码日志