2014-04-04 29 views
6

Bir Windows makinesinde vagrant (çalışan ubuntu) bir django webapp çalıştırıyorum. Uygulama, çoğu zaman doğru şekilde günlüğe kaydetme için bir RotatingFileHandler ayarına sahiptir.RotatingFileHandler Windows'da "Metin Dosyası Meşgul"

'default': { 
    'level':'DEBUG', 
    'class':'logging.handlers.RotatingFileHandler', 
    'filename': 'logs/application.log', 
    'maxBytes': 1024 * 1024 * 5, # 5 MB 
    'backupCount': 5, 
    'formatter':'standard', 
}, 

sorun: Ama sonunda günlük dosyası, aynı tarihte İşte

RotatingFileHandler için yapılandırma snippet'tir (defalarca)

Logged from file util.py, line 79 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/logging/handlers.py", line 78, in emit 
    self.doRollover() 
    File "/usr/lib/python2.7/logging/handlers.py", line 141, in doRollover 
    os.rename(self.baseFilename, dfn) 
OSError: [Errno 26] Text file busy 

devirmeye başarısız işaret doldurur Paylaşılan vagrant dizinde oturum açıyor gibi görünüyor, bu yüzden Windows dosya kilitleme sorunları içine koşuyor. Paylaşılan dizinin dışındaki bir dizinde oturum açmak için değiştirirseniz, tamamlanır.

Sorum şu ki, vagrant dizini günlüğe kaydetme işlemine gerek kalmadan yukarıdaki hatayı önlemek için yapabileceğim bir şey var mı?

Diğer sunucularda daha kolay taşınabilir olması için pencereyi orada tutmak istiyorum ve böylece günlükleri pencerelerde görüntüleyebilirim. Hata gördüğünde Django geliştirme sunucusu çalıştıran olsaydı

+0

Bunun için bir çözüm buldunuz mu? –

cevap

7

,

python manage.py runserver --noreload 

varsayılan olarak Django sunucularının iki süreç çalışan Bunun nedeni deneyin. Biri gerçek sunucu, diğeri ise koddaki değişiklikleri tespit etmek ve sunucuyu yeniden yüklemek. Bu nedenle, settings.py iki kez alınır ve sonuç olarak iki işlem aynı anda günlük dosyasına erişir.

Daha fazla bilgi here.

+0

apache'yi kullanarak django uygulamasını çalıştırdığımda ne olacağı. Apache varsayılan olarak istekleri geldiğinde birden fazla iş parçacığı oluşturur. Aynı hataya neden olan iki iş parçacığı, zaman içinde belirli bir noktada aynı günlük dosyasını kullandığı için yüksek olasılıklar vardır. – nkkrishnak

+0

@nkkrishnak Üretimde Apache kullanıyoruz ve bu hatayı asla göremiyoruz. Benim varsayımım, günlük dosyasına erişen birden fazla iş parçacığına sahip olmanın iyi olduğudur. Sorun, varsayılan parametrelerle python geliştirme sunucusunu çalıştırırken ortaya çıkar, daha sonra settings.py iki kez içe aktarılır ve çoklu günlük işleyicileri oluşturulur. – azalea