我想检查特定后台文件中的错误,但标准错误流由程序在前台控制,并且问题中文件中的错误不是正在显示。不过,我可以使用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) –