将日期时间戳记添加到Python打印

发布于 2021-01-29 15:22:58

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

我认为,与其修改所有怀疑与我看到的故障有关的调试打印的源代码,不如 临时对内置的Python打印“函数” 进行 猴子修补
,以使所有输出都带有前缀,这可能是可行的时间戳记。

由于内置打印不是我正在使用的Python
2.6环境中的功能,所以我不知道这是否可行。如果有人使用Python的另一个钩子做到了这一点或获得了相似的结果,那么我将很感谢您的建议,甚至会为解决该问题提供更好的代码。

关注者
0
被浏览
148
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    由于您无法覆盖该write函数(它是只读的),因此一个简单的猴子补丁可能看起来像这样(将时间戳添加到每个打印行):

    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]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看