我的应用程序是从run.py
调用的。我已经安装了Pygments,我想重定向Python的输出,这样当回溯发生时,它们的格式就会更容易阅读。
这是我尝试过的命令python run.py 2>&1 | pygmentize -l py
通过pygmentize重定向stdout
和stderr
。 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
有什么建议吗?
答案 0 :(得分:2)
pygmentize reads the whole input stream只在输入流关闭时输出所有内容,所以在第一个进程结束后,你只能通过pygments输出任何输出。
我担心你无能为力。如果你想格式化连续流,你只能尝试围绕pygments编写自己的包装器,它会以块的形式读取输入流并将其提供给pygments。
你现在根本没有看到任何输出的原因是你可能正在使用 Ctrl + C 来停止shell中的进程,但这会杀死这两个进程。如果您使用kill
仅终止服务器进程,那么您应该至少看到上面提到的那些行通过pygments。