Resque

2011-06-28 10 views
6

के साथ लॉगिंग समस्याएं मैंने अपने रेल 3 प्रोजेक्ट में रेस्क जोड़ा है। मैंने एक नौकरी बनाई है जो कुछ सामग्री को डीबी से/लिखती है।Resque

समस्या यह है कि मुझे टर्मिनल में "पोस्ट लोड (0.5ms) SELECT" पोस्ट "जैसे * पोस्ट लोड (" पोस्ट "" जैसे SQL क्वेरी लॉग दिखाई नहीं देते हैं। मैं भी स्थापित किए गए Rails.logger संदेशों को नहीं देख रहा हूं।

जब मैं अभी तक एक और अनुरोध (सरल ताज़ा) करता हूं तो लॉगजर संदेश और SQL क्वेरी लॉग अचानक दिखाई देते हैं।

कोई विचार क्या हो सकता है? धन्यवाद

उत्तर

4

रेल लॉग फ़ाइल को तुरंत नहीं लिखेंगे, यह फाइल को फ्लश करने से पहले कुछ निश्चित लाइनों के लिए इंतजार कर रहा है। आप रेल बता हमेशा अपने development.rb या application.rb फ़ाइल को यह जोड़कर लॉग फ्लश करने के लिए कर सकते हैं ...

config.logger.auto_flushing = true 

केवल कभी विकास में ऐसा करते हैं, और कभी उत्पादन में इस सेट के रूप में यह सिर्फ अपने मैं मार डालेगा/हे ।

तुम भी साथ मांग पर यह कर सकते हैं ...

Rails.logger.flush 

एपीआई यहाँ प्रलेखन ...

http://api.rubyonrails.org/classes/ActiveSupport/BufferedLogger.html#method-i-auto_flushing-3D

+1

ActiveSupport :: BufferedLogger # auto_flushing अब रेल 3.2 पर बहिष्कृत है। निर्देश या तो अंतर्निहित फ़ाइल हैंडल पर सिंक स्तर सेट करना है, या अपने फाइल सिस्टम को ट्यून करना है। एफएस कैश अब फ्लशिंग को नियंत्रित करता है। फ़ाइल = File.open ('foo.log', 'w') file.sync = true सक्रिय समर्थन :: BufferedLogger.new फ़ाइल – plainjimbo

+0

स्वरूपण उस पर बहुत खराब है, आप इसे दस्तावेज़ों में बेहतर तरीके से देख सकते हैं "बहिष्करण" खंड - https://github.com/lifo/docrails/blob/master/railties/guides/source/3_2_release_notes.textile – plainjimbo

+0

@ जिम्बो - उस बहिष्करण संदेश के साथ समस्या यह है कि मुझे नहीं पता कि "सेट करें" अंतर्निहित फ़ाइल हैंडल पर सिंक स्तर "मतलब है। –

0

Resque उत्पादन मोड में लॉग फ्लश नहीं करेंगे (बशर्ते आपके नौकरी लॉग की 1000 से अधिक लाइनें उत्पन्न कर रही है)।

आपको जेनरेट की गई प्रत्येक पंक्ति के लिए फ़्लश करना होगा। मैं फ़ाइल lib/कार्य/resque.rake के साथ ही resque कॉन्फ़िगर करेंगे:

task "resque:setup" => :environment do 
    Resque.before_first_fork = Proc.new { Rails.logger.auto_flushing = 1 } 
end 
2

हम अपने परियोजनाओं में से एक में एक ही समस्या आ रही। इसके अतिरिक्त हम सभी Resque संदेशों को एक अलग लॉग फ़ाइल में भी लॉग करना चाहते थे।

ब्लॉग पोस्ट Enable immediate log messages of resque workers में एक कोड नमूना पाया जा सकता है ताकि तत्काल लॉगिंग को एक अलग फ़ाइल में सक्षम किया जा सके।