我的应用程序是从run.py
调用的。我已经安装了Pygments,我想重定向Python的输出,以便在回溯发生时,它们的格式更易于阅读。在
这是我尝试过的命令,python run.py 2>&1 | pygmentize -l py
通过pygmetize重定向stdout
和{stdin
读取,“如果没有提供输入文件,则使用stdin;如果没有给出-o,则使用stdout。”
然而,当我像这样重定向时,没有输出——错误、日志语句或其他任何东西——输出到我的终端。在
当我运行我的命令而不把它的输出传送到pygmetize中时,即python run.py 2>&1
我得到以下输出:
INFO:werkzeug: * Running on http://0.0.0.0:5000/
INFO:werkzeug: * Restarting with reloader
有什么建议吗?在
当从stdin读取时,pygmentizereads the whole input stream并且只有在输入流关闭的情况下才输出所有内容,因此只有在第一个进程结束后,才能通过pygments获得任何输出。在
恐怕你对此无能为力。如果你想格式化一个连续的流,你只能试着在pygments上写你自己的包装器,它会把输入流分块读出来,然后把它给pygments。在
您现在根本看不到任何输出的原因是您可能正在使用Ctrl+C在shell中停止您的进程,但这会杀死两个进程。如果使用
kill
只终止服务器进程,那么至少应该看到上面提到的通过pygments的行。在相关问题 更多 >
编程相关推荐