我想檢查特定後臺文件中的錯誤,但標準錯誤流由程序在前臺控制,並且問題中文件中的錯誤不是正在顯示。不過,我可以使用logging
模塊並將輸出寫入文件。我想知道如何使用它來記錄所有異常,錯誤和回溯。使用python的日誌記錄模塊記錄所有異常和錯誤
回答
在程序中拋出任何異常可能是一個壞主意,因爲Python對正常控制流也使用異常。
因此,您應該只記錄未捕獲的異常。一旦你有一個異常對象,你可以使用記錄器的exception()
method輕鬆做到這一點。
要處理所有未捕獲的異常,你可以換你的腳本的入口點在try...except
塊,或者通過安裝自定義異常處理程序重新分配sys.excepthook()
:
import logging
import sys
logger = logging.getLogger('mylogger')
# Configure logger to write to a file...
def my_handler(type, value, tb):
logger.exception("Uncaught exception: {0}".format(str(value)))
# Install exception handler
sys.excepthook = my_handler
# Run your main script here:
if __name__ == '__main__':
main()
謝謝!這正是我需要的。 –
將'sys.__ excepthook __(type,value,tb)'追加到'my_handler'中不是個好主意,因此它可以處理異常的默認操作? – troyane
@ Ferdinand Beyer:整潔。有'logger.exception(「未捕獲的異常:{0}:{1}」。格式(str(value .__ class __.__ name__),str(value)))'在我的情況下給'ERROR - 未捕獲的異常:IndexError:list索引超出範圍「,並由於某種原因打印出」無「。我如何獲得完整的追溯? 'tb'似乎是一個追蹤對象,但是'traceback.print_tb(tb)'也只是吐出'None'。 – bioslime
- 1. 不使用python日誌記錄庫記錄所有錯誤
- 2. Python日誌記錄異常
- 3. Python日誌記錄 - dictConfig - 子模塊的日誌記錄目標
- 4. SignalR異常日誌記錄?
- 5. Log4Net日誌記錄異常
- 6. 從庫模塊的Python日誌記錄
- 7. WCF錯誤日誌記錄和SQL異常4060錯誤
- 8. 擴展python日誌記錄模塊
- 9. Python日誌記錄 - 排除子模塊
- 10. 的Python:在所有模塊自定義日誌記錄
- 11. Sitecore異常處理和日誌記錄
- 12. Heroku日誌記錄和異常跟蹤
- 13. cf.net異常和其他日誌記錄
- 14. Python中的日誌記錄錯誤
- 15. 使用Python日誌記錄管理日誌記錄器
- 16. 我應該使用日誌記錄模塊還是日誌記錄類?
- 17. 日誌記錄錯誤()
- 18. 日誌記錄錯誤
- 19. Python日誌記錄類型錯誤
- 20. Python日誌記錄SQL錯誤
- 21. Python日誌記錄不工作 - 日誌記錄對象和sys.modules.pop()
- 22. 使用多個模塊的python日誌記錄不起作用
- 23. PowerShell中的異常日誌記錄
- 24. 使用Python日誌記錄器記錄到文件和stderr
- 25. c擴展中的python日誌記錄模塊的使用
- 26. Python日誌記錄setLevel不記錄
- 27. 僅記錄異常而不是所有種類的日誌
- 28. 在Python中使用日誌記錄模塊的奇怪問題
- 29. 重複使用python模塊上的日誌記錄配置
- 30. PowerShell錯誤處理和日誌記錄
[登錄在未捕獲異常的可能的複製Python](http://stackoverflow.com/questions/6234405/logging-uncaught-exceptions-in-python) –