我有一個GUI Python程序,並通過有沒有辦法在Python中自動刷新/ fsync stderr?
import sys
sys.stderr = open("err.log", "w")
一個簡單的錯誤日誌記錄系統,它作品大多罰款。我遇到的一個問題是,無論何時遇到使用Windows 7和Python 2.7.3的運行時錯誤,只有在關閉程序後纔會寫入err.log文件。閱讀我收集的相關問題我需要在出錯後執行flush()和os.fsync()到sys.stderr,但我不知道如何輕鬆完成。
一種方法可能是在程序中的每個可能的點之後執行flush/fsync,但運行時錯誤是可能的,但這顯然不是一個好的解決方案。使用這種錯誤日誌記錄的主要原因是調試,所以根據定義,我不能事先知道需要刷新的地方,而不是在可能發生運行時錯誤的所有可能的地方刷新。既然有很多這樣的地方,我寧願不必嘗試/抓住他們每一個。
我正在使用PyGTK,因此沒有主循環可見,我可以在其中執行flush/fsync。
有什麼辦法可以告訴Python總是在出現錯誤後執行flush和fsync,或者有沒有人有其他想法如何解決這個(小問題)?
這也適用於我,我會將其標記爲已接受。不過,我也很好奇伐木。我嘗試了一個簡單的例子,但有一些問題。不僅僅是在關閉程序之後才寫入日誌文件,我找不到一種方法來讓運行時錯誤被日誌記錄器處理。 – Asta
更常見的使用模式是讓'logging'像平常一樣寫入stderr(它是無緩衝的),然後檢查該流是否生成。該工作流程經過了很好的測試。 –