簡體   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