2011-01-27 19 views
6

Bir sunucuda, Apache/mod_wsgi üzerinde çalışan Django kodu geliştirmeye başladım. Normalde sunucuda çalışan ayıklama uygulamalara Hangi tekniklerDjango kodunu mod_wsgi'de hata ayıklama (['wsgi.errors'] 'a nasıl erişilir)

  1. kullanılır:

    Birkaç şeyleri anlamak için arıyorum?

  2. Özel olarak, şimdilik sadece "print" hata ayıklamasını kullanmaya çalışıyorum. Ama ben çalışmak için baskı bildirimleri olsun görünmüyor. Ben stderr için baskı yapıyorum, ama Bakıyorum hangi günlük dosyası bakmalıyım. this uyarınca environ['wsgi.errors'] kullanıyor olmalıyım, ancak bunu Django kodumdan nasıl erişirim?

Teşekkürler!

DÜZENLEME: Bu arada, çizgi print >> sys.stderr, 'message ...' ekleyerek basitçe yüklenmez benim uygulamanın bölümlerini neden olur, herhangi bir günlük dosyasına yazdırmak için görünmüyor sadece.

+2

Çevreye nasıl erişileceğini anladım. Basitçe şunu yapın: 'request.META ['wsgi.errors']. (" Ello world ") yazın. –

+1

Gösterdiğiniz gibi 'yazdır'ı kullanarak, stderr'e yönlendirilmek iyi çalışıyor. Hangi Apache hata kayıt dosyası, gömülü mod veya daemon modunu kullanıp kullanmadığınızı ve VirtualHost'un içinde ErrorLog yönergesini kullanıp kullanmadığınızı gösterir. Eğer günlükte çıkmıyorsa, eğer varsa, WSGI betik dosyasında sys.stdout/sys.stderr için ne türden şeyler yapıyorsunuz? –

+2

Kullanım "yazdırma >> istek.META ['wsgi.errors']," merhaba dünya "" kullanabilirsiniz. –

cevap

5
  1. django debug toolbar'u kullanmayı deneyin. Bir hata ayıklayıcısını kullanamadığınızda hata ayıklama konusunda çok yardımcı olabilir.

    Gerçekten de, geliştirme makinenizde hata ayıklama yapılmalıdır. Dev kutularmda da meydana gelmeyen django ile üretimde bir kod sorunu görmedim.

  2. Genellikle mod_wsgi'de yazdıramazsınız. Bunun yerine logging modülünü kullanın. İstediğiniz şey budur ve hata ayıklama araç çubuğu size sayfadaki günlük ifadelerini gösterecektir, böylece dosyaya bakmak zorunda kalmazsınız.

+1

Günlüğe kaydetme modülünü kullanmaya çalışıyorum. "Basit örnekler" in ilk satırları olan views.py sayfamın üst kısmına ekledim, ancak "izin reddedildi" IOError (ev dizinime giriş yapmaya çalışıyorum) alıyorum. İzin vermek için yapmam gereken bir şey var mı? –

+0

Sorunu buldum - Apache'nin altında çalıştığı kullanıcı giriş yaptıkları kullanıcı değil, bu yüzden giriş dizininin limiti kapalı. Herkes için chmod a + w logs 'kullanarak log dizinine izin verdim. Django ile günlüğe kaydetme sorununu nasıl ayarlayacağınız konusunda herhangi bir öneriniz var mı?Sadece "view.py" lemin üst kısmına kod eklemenin harika bir fikir olmadığını hissediyorum. –

+1

Herhangi bir mod_wsgi sürümünde "print >> sys.stderr, 'message ...'" kullanabilirsiniz. En son mod_wsgi'yi kullanın ve 'print' özelliğini stderr'e yönlendirmeden de kullanabilirsiniz. Mod_wsgi <3.0, portatif WSGI uygulamaları yazmanızı teşvik etmek için engellendi, ancak hiç kimse bununla ilgilenmiyor. Tarih ve nedenlerle ilgili 'http://blog.dscpl.com.au/2009/04/wsgi-and-printing-to-standard-output.html' bölümünü okuyun. –

İlgili konular