我在生产中的Django服务器上有浮动错误,它不会导致异常,只会导致一些错误的行为。但我不能在我的语言环境机器上重现它;所以我需要在服务器端调试它。是否有任何工具可以记录所有变量的所有状态,然后我可以重播有问题的请求并找出行为错误的原因?
答案 0 :(得分:2)
我同意Taras的建议,即Sentry是一件很棒的事情。不幸的是,如果问题没有产生异常(或INFO或WARN消息),那么它就不会自己解决问题。
我建议(如果您还没有这样做)将哨兵记录实施到您的观看次数:https://raven.readthedocs.io/en/stable/integrations/django.html
将Sentry添加到生产应用后,您可以在视图中添加以下代码:
def my_view(request):
if some_condition:
foo = 12
else:
foo = 15
logger.info('Line 45 of the Login view', exc_info=True, extra={
'request': request,
'myvar': foo, # A variable you're interested in
})
然后,如果您访问生产页面,它将生成一条您可以在哨兵中查看的日志消息。
旁注 一旦确定了您的特定错误,可能值得研究一下您无法在本地重现问题。这不可避免地发生在每个人身上,但最小化是件好事。这样做的一些技巧包括: