Ben bazı arama yaptım, ama kimse bir yığın izleme için sadece bir yığın izleme çıktı almak için bir günlüğü yapılandırma bir snippet varsa merak ediyorum (bir istek sırasında bir hatayla karşılaştığında bunu Terminal penceresinden görebilirim. Bu özellikle yerel geliştirme/hata ayıklama için ve özellikle AJAX posta istekleri yaptığımda ve hatanın oluştuğu satırı bulmak için Firebug'daki HTML'ye bakmak zorundayım.Django kullanırken yönetmek için bir yığın izleme django kullanırken yönetmek.py runserver
cevap
Bunu yapmak için bir parça katman oluşturabilirsiniz.
class ExceptionLoggingMiddleware(object):
def process_exception(self, request, exception):
import traceback
print traceback.format_exc()
Yeri Django ayarlarının sizin katman kısmında bu işleyici: İşte bir proje için kullanıyorum değiştirilmiş pasajı bu.
alt sınıf WSGI işleyicisi, kendi handle_uncaught_exception
tanımlı içinde traceback ile her istediklerini ve dağıtırken django tarafından sağlanan yerine WSGIHandler kullanın.
import traceback
from django.core.handlers.wsgi import WSGIHandler
class MyWSGIHandler(WSGIHandler):
"""WSGI Handler which prints traceback to stderr"""
def handle_uncaught_exception(self, request, resolver, exc_info):
traceback.print_tb(exc_info[2], file=sys.stderr)
return super(WSGIHandler, self).handle_uncaught_exception(request, resolver, exc_info)
, bu Apache hata günlüğüne
başka yöntem günlüğünü ile de Traceback yazmalısınız.
LOGGING = {
'version': 1,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.request': {
'handlers':['console'],
'propagate': True,
'level':'DEBUG',
}
},
}
Bu söz dizimi Django belgelerinde Configuring Logging gelir ve daha fazla artırmak veya konsolu üzerinden miktarını azaltmak için değiştirilebilir: settings.py dosyasına aşağıdaki ekleyerek ./manage.py runserver
çalıştırırken Özellikle bir stacktrace olsun günlüğü.
da 5XX tepkileri hata iletileri yetiştirilir ve 4XX tepkileri uyarı mesajları gibi yetiştirilir.
Bu sorunun & yanıt 2013 2013 yinelenen here olduğunu unutmayın.
Bu bence tercih edilen yöntem olmalı. Hangi logger'ları kullanmak istediğiniz hakkında çok daha fazla kontrole sahipsiniz, ne kayıt etmek istediğinizi vs. – Andre
Benzer bir sorunla karşılaştım, ancak orta yazılım seçeneği bana yardımcı olmadı. Bunun nedeni, bir dizego-jsonview 0.4.3'ün, bir sözlükte, geçerli bir json http yanıtına dönüştüren bir dekoratörün, dekore edilmiş işlev başarısız olduğunda bile, yani process_exception middleware yönteminin hiçbir zaman çağrılmadığı şekilde kullanıyorum. Bu dekoratör kodunu kontrol edilip buna bunu hatayı günlüğe çalışır görünüyor: Bu çalışmıyor ve hiçbir şey benim bash konsoluna kaydedilir neden
...
except Exception as e:
logger = logging.getLogger('django.request')
logger.exception(unicode(e))
Ancak, ben bilmiyorum. Bunun neden olduğunu öğrenmeliyim. Tüm json görünümlerinde, Sonra
def log_errors(func):
if not settings.DEBUG:
return func
def wrapper(request, *args, **kwargs):
try:
return func(request, *args, **kwargs)
except:
print traceback.format_exc()
return wrapper
: Bu arada ben ekstra bir dekoratör kullanıyorum
@json_view
@log_errors
def my_view(request):
....
Bunu genelde kullanın: Sonra
except Exception,e:
# Get line
trace=traceback.extract_tb(sys.exc_info()[2])
# Add the event to the log
output ="Error in the server: %s.\n" % (e)
output+="\tTraceback is:\n"
for (file,linenumber,affected,line) in trace:
output+="\t> Error at function %s\n" % (affected)
output+="\t At: %s:%s\n" % (file,linenumber)
output+="\t Source: %s\n" % (line)
output+="\t> Exception: %s\n" % (e)
Kullandığım "çıktı "İhtiyacım olan her şey için: stdout'a yazdır, e-posta gönder, vb ...
St aralıkta kimse DEBUG_PROPAGATE_EXCEPTIONS
ayarından bahsetmedi.Bu üretim için değil, test/hata ayıklama ortamında kullanmak için çok kolay. Basitçe settings.py
:
DEBUG_PROPAGATE_EXCEPTIONS = True
- 1. Django - runserver hatası
- 2. manage.py runserver çalışmıyor Django
- 3. Mongoengine kullanırken Django auth hatası
- 4. django üzerinde folium kullanırken en iyi uygulama
- 5. Threading kullanırken Django içindeki veritabanı hataları
- 6. Django: izleme modelinde bir alan
- 7. django - Bu İzleme sahip
- 8. Django kanalları ile Elastik Beanstalk kullanırken Websocket hatası
- 9. django-storages django uygulamasında kullanırken amazon s3 üzerinde saklanan görüntüler için 304 nasıl edinilir?
- 10. C# sürücüsü kullanırken MongoDB sorgularını izleme
- 11. Django
- 12. django-pagination kullanırken doğru nesne numaralarını nasıl gösteririm?
- 13. C Ücretsiz() kullanırken yığın arabelleği bozulması()
- 14. Docker-Compose'u kullanırken Django veritabanı geçişlerini nasıl gerçekleştirirsiniz?
- 15. Django - geçerlilik denetleyicileri kullanırken iki kez gösteren hata iletisi
- 16. Django: post_delete sinyalini kullanırken hangi kullanıcının silindiğini belirleme
- 17. Django yöneticisinde, filter_horizontal kullanırken ManyToMany alanının widget'inin genişliğini nasıl artırabilirim?
- 18. Para hesaplarını ve işlemlerini yönetmek için Django takılabilir
- 19. PyCharm manage.py runserver hatası
- 20. LRUCache giriş rewdering kullanırken kullanırken
- 21. Django runserver, "Sistem denetimi hiçbir sorun tespit etmedi (0 susturuldu)."
- 22. Python: type() kullanırken eksik class özniteliği __module__?
- 23. Üretim sunucusunda django dinlenme çerçeve api izleme
- 24. Yığın İzleme Konsolu
- 25. IndexOutofBounds Java'nın okuma baytlarını kullanırken
- 26. Ad alanı olmadan Apphook kullanırken NoReverseMatch
- 27. Yığın izleme 3
- 28. Django + Angular + Django-allauth
- 29. Alıkoyduğunda Yığın boyutu daha fazla jackson kullanırken ObjectMapper
- 30. Async/await kullanırken tam Node.js yığın izi nasıl alınır?
"Terminal Penceresi" ne ekleyin? 'Django-admin.py runserver' çalıştırıyor musunuz? –
Evet, "manage.py runserver" yerel olarak, ancak bu, e-postalar aldığım halde, daha az sorun olsa da, bu üretim için de yararlı olacaktır. – Bialecki
"üretim" yaklaşımı Apache ile nasıl entegre olduğunuza bağlı olduğundan, anladığımızdan emin olmak için bu yapılandırma hakkında daha fazla ayrıntı sağlamanız gerekir. –