2010-10-04 13 views
12

मैं अपने अजवाइन विन्यास फाइल में सेटिंग्स नीचे है:djcelery के साथ celeryd के लिए लॉग फ़ाइलों के घूर्णन को सक्षम करने के लिए कैसे?

  1. CELERYD_LOG_DEBUG = 'गलत'
  2. CELERYD_LOG_FILE = आर '/ var/log/अजवाइन/celeryd.log'
  3. CELERYD_LOG_LEVEL = "error"

मैंने अजवाइन की सेटिंग्स फ़ाइल को देखा और कॉन्फ़िगरेशन में लॉग फ़ाइल आकार सीमा निर्दिष्ट करने का कोई विकल्प नहीं है। यहां तक ​​कि कोड रोटेशनहैंडलर क्लास के बजाय StreamHandler का उपयोग करने जैसा दिखता है। कोई सुराग/संकेत?

धन्यवाद।

उत्तर

21

Ubuntu पर लॉग रोटेशन लिए, यदि आप/var/log/अजवाइन में अपने अजवाइन लॉग है/ celeryd.log आप एक विन्यास एक तरह से ऊपर का उपयोग कर सकते /etc/logrotate.d साथ साप्ताहिक लॉग रोटेशन करने के लिए /।

/var/log/celery/*.log { 
    weekly 
    missingok 
    rotate 52 
    compress 
    delaycompress 
    notifempty 
    copytruncate 
} 
+0

मैंने कोशिश की लेकिन मैंने बिल्कुल मेरे लिए काम नहीं किया। यह दैनिक फाइलें (मेरे मामले में) बनाता है लेकिन लॉग घुमाए जाने के बाद भी, लॉग फ़ाइल अभी भी मौजूद है, फिर भी जब तक मैं सेलेरीड और सेलेरीबीट को पुन: स्थापित नहीं करता तब तक यह खाली रहता है। क्या कोई संकेत है कि मैं इसे "बदले" फ़ाइल को जानने के लिए प्रक्रिया भेज सकता हूं? –

+0

आपको अजवाइन 2.2.5 या उच्चतर का उपयोग करना चाहिए, वहां लॉग-रोटेट समस्याओं के बिना काम करना चाहिए। http://docs.celeryproject.org/en/latest/changelog.html#v225-news –

+0

मेरी requirements.txt से: अजवाइन == 2.5.3 Django-अजवाइन == 2.5.5 मेरे स्टार्टअप आदेश: python manage.py celeryd_detach --pidfile = {project_location} /celeryd.pid --autoscale = 10,10 --autoreload --loglevel = INFO --logfile = {log_location} /celeryd.log --pythonpath =/usr/शेयर/pyshared लॉग घुमाए जाने के बाद यह खाली रहता है जब तक कि मैं पिछली नौकरी को मारता हूं और इसे पुनरारंभ नहीं करता। –

1

[WatchedFileHandler][1] का उपयोग करने का प्रयास करें। यह नोटिस करता है कि एक फ़ाइल को छोटा कर दिया गया है या अन्यथा बदला गया है और फ़ाइल को फिर से खोलता है। नोट आपको CELERY_HIJACK_ROOT_LOGGER = गलत सेट करना होगा और फिर अपने लॉगर को स्वयं सेटअप करना होगा, और कार्यों के अंदर logging.getLogger ('custom_logger') करना होगा। सेलेरी की बिल्टिन लॉगिंग कॉन्फ़िगरेशन लचीला नहीं है और जुर्माना नियंत्रण के लिए this post देखें।

संबंधित मुद्दे