繁体   English   中英

通过Pygments重定向python回溯

[英]Redirect python tracebacks through Pygments

我的应用程序是从run.py调用的。 我已经安装了Pygments,我想重定向Python的输出,以便在发生回溯时,它们以更易于阅读的格式进行格式化。

这是我试过的命令, python run.py 2>&1 | pygmentize -l py python run.py 2>&1 | pygmentize -l py

通过pygmentize重定向stdoutstderr pygmentize文档说如果没有提供文件,它将从stdin读取,“如果没有给出输入文件,使用stdin,如果没有给出-o,请使用stdout。”

但是,当我像这样重定向时,没有输出 - 错误或日志语句或其他任何东西 - 输出到我的终端。

当我运行我的命令而不将其输出汇总到pygmentize,即python run.py 2>&1我得到这个输出:

INFO:werkzeug: * Running on http://0.0.0.0:5000/
INFO:werkzeug: * Restarting with reloader

有什么建议么?

pygmentize在从stdin读取时读取整个输入流 ,并且仅在输入流关闭时输出所有内容,因此在第一个进程结束后,您将只通过pygments获取任何输出。

我担心你无能为力。 如果你想格式化连续流,你只能尝试围绕pygments编写自己的包装器,它以块的形式读取输入流并将其提供给pygments。

您现在根本没有看到任何输出的原因是您可能正在使用Ctrl + C来停止shell中的进程,但这会杀死这两个进程。 如果你使用kill来终止服务器进程,那么你至少应该看到上面提到的那些行经过pygments。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM