मैं रैक के माध्यम से एक sinatra ऐप चला रहा हूँ।रैक लॉग इन कहां है?
गतिविधि किस फ़ाइल को लॉग इन करती है? मैं लॉग फ़ाइल पथ कैसे सेट कर सकता हूं?
मैं रैक के माध्यम से एक sinatra ऐप चला रहा हूँ।रैक लॉग इन कहां है?
गतिविधि किस फ़ाइल को लॉग इन करती है? मैं लॉग फ़ाइल पथ कैसे सेट कर सकता हूं?
यह निर्भर करता है। कई डेवलपर्स अपनी ऐप लॉग फ़ाइल को ऐप/servername.log पर या केवल वर्तमान पथ पर परिभाषित करते हैं जहां रैक ऐप लोड होता है।
हाँ आप इसका मार्ग बदल सकते हैं। इस मामले लॉग फ़ाइल appdir/sinatra.log के नीचे स्थित है में
log = File.new("sinatra.log", "a+") $stdout.reopen(log) $stderr.reopen(log)
और/या
configure do LOGGER = Logger.new("sinatra.log") enable :logging, :dump_errors set :raise_errors, true end
:
आमतौर पर आप की तरह कुछ के साथ एक config.ru फ़ाइल मिलता है। लेकिन याद रखें कि यह कोड आपके रैक ऐप में कहीं भी हो सकता है, इसलिए कृपया अपनी एप्लिकेशन निर्देशिका में "लॉग" की तलाश करें।
$ cd projectname $ grep -ri 'log' *
मज़ेदार हैं और यहां अपनी config.ru और/या mainprojectfile.rb पोस्ट करें।
object_id
प्रारंभ में वही हैं लेकिन $stderr
को असाइन करना बेहतर है। ,
$ irb
>> $stderr.object_id == STDERR.object_id
=> true
एक ही वस्तु अब के लिए: यह भी आप जहां यह STDERR
साथ मूल रूप से था करने के लिए धारा वापस जाने के लिए खुला छोड़कर। , कहीं यह भेजें
>> $stderr = File.open('/tmp/foo', 'w')
=> #<File:/tmp/foo>
>> $stderr.puts "Uh-oh, foo"
=> nil
>> $stderr.flush # if you want to verify its output
=> #<File:/tmp/foo>
>> $stderr.object_id == STDERR.object_id
=> false
$stderr
और STDERR
विभिन्न वस्तुओं को देखें। STDERR
अभी भी टर्मिनल यहाँ स्ट्रीम करता है,
>> STDERR.puts "Uh-oh, original STDERR"
Uh-oh, original STDERR
=> nil
पुनर्स्थापित $stderr
,
>> $stderr = STDERR
=> #<IO:0x106fddb88>
>> $stderr.object_id == STDERR.object_id
=> true
और हम वापस आ गए!
हाय फ्रांसिस्को। हाँ, यह मेरे लिए सही काम करता है। log_path = "<पथ करने वाली लॉग-फ़ाइल>" लकड़हारा = Logger.new (log_path, "दैनिक") लॉग = File.new (log_path, "एक +") STDOUT.reopen (लॉग इन करें) STDERR .reopen (लॉग) –
@ शामिल: क्या कोई तरीका है कि मैं उत्पादन और विकास वातावरण फाइलों पर लॉग इन कर सकता हूं लेकिन टर्मिनल पर परीक्षण लॉग कर सकता हूं? ऐसा लगता है कि जब मैं '$ stdout' और' $ stderr' फिर से खोलता हूं, तो यह परीक्षण आउटपुट को फ़ाइलों पर भी रीडायरेक्ट करता है। –
एसटीडीओयूटी को फिर से खोलने से यात्री शुरू नहीं हो सकता है: https://github.com/phusion/passenger/wiki/Debugging-plication-startup-problems – fguillen