जवाबों:
अद्यतन (dawmail333 के लिए धन्यवाद):
heroku logs -n 1500
या, लॉग को लाइव करने के लिए पूंछ
heroku logs -t
यदि आपको कुछ हज़ार से अधिक लाइनों की आवश्यकता है तो आप हेरोकू के सिसलॉग नालियों का उपयोग कर सकते हैं
वैकल्पिक रूप से (पुरानी विधि):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
, यह देवदार पर उपलब्ध सबसे अच्छा तरीका है। यदि आपको उससे अधिक लाइनें चाहिए, तो आपको एक syslog ड्रेन की आवश्यकता है: devcenter.heroku.com/articles/log#syslog_drains
heroku run rails c
। अपडेट किया गया!
heroku run cat log/production.log
?
लॉगिंग से हेरोकू में बहुत सुधार हुआ है!
$ heroku logs -n 500
बेहतर!
$ heroku logs --tail
संदर्भ: http://devcenter.heroku.com/articles/log
UPDATED
ये अब ऐड-ऑन नहीं हैं, लेकिन डिफ़ॉल्ट कार्यक्षमता का हिस्सा है :)
हेरोकू समय-क्रम की घटनाओं के रूप में लॉग का व्यवहार करता है। *.log
ऐसे वातावरण में कई कारणों से फाइलसिस्टम पर फ़ाइलों को एक्सेस करने की अनुशंसा नहीं की जाती है।
सबसे पहले, यदि आपके ऐप में एक से अधिक डायनो हैं तो प्रत्येक लॉग फ़ाइल केवल आपके ऐप की घटनाओं में एक आंशिक दृश्य का प्रतिनिधित्व करती है। आपको पूर्ण दृश्य प्राप्त करने के लिए सभी फ़ाइलों को मैन्युअल रूप से एकत्रित करना होगा।
दूसरा, हरोकू पर फाइलसिस्टम का अर्थ है जब भी आपके डायनो को फिर से चालू किया जाता है या स्थानांतरित किया जाता है (जो दिन में एक बार होता है ) लॉग फाइलें खो जाती हैं। तो आप केवल एक दिन के दृश्य को उस एकल डायनो के लॉग में प्राप्त करें।
अंत में, देवदार स्टैक पर चल रहा है heroku console
या यहां तक कि heroku run bash
आपको वर्तमान में चल रहे डायनो से कनेक्ट नहीं करता है। यह विशेष रूप से bash
कमांड के लिए एक नया स्पॉन बनाता है । इसे एक-बंद प्रक्रिया कहा जाता है । जैसे, आपको अपने अन्य डायनो के लिए लॉग फाइलें नहीं मिलेंगी, जिनके लिए वास्तविक http प्रक्रिया चल रही है heroku run
।
लॉगिंग , और सामान्य रूप से दृश्यता, हरोकू पर एक प्रथम श्रेणी का नागरिक है और इन मुद्दों को संबोधित करने वाले कई उपकरण हैं। सबसे पहले, सभी dynos भर में आवेदन घटनाओं की एक वास्तविक समय धारा देखने के लिए और आवेदन / स्टैक की सभी परतेंheroku logs -t
आपके टर्मिनल पर आउटपुट के लिए कमांड का उपयोग करती हैं ।
$ heroku logs -t
2010-09-16T15:13:46-07:00 app[web.1]: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) [GET]
2010-09-16T15:13:46-07:00 app[web.1]: Rendering template within layouts/application
2010-09-16T15:13:46-07:00 heroku[router]: GET myapp.heroku.com/posts queue=0 wait=0ms service=1ms bytes=975
2010-09-16T15:13:47-07:00 app[worker.1]: 2 jobs processed at 16.6761 j/s, 0 failed ...
यह आपके एप्लिकेशन के व्यवहार को देखने के लिए बहुत अच्छा काम करता है। यदि आप लंबे समय तक लॉग को स्टोर करना चाहते हैं, तो आप कई लॉगिंग ऐड-ऑन में से एक का उपयोग कर सकते हैं जो लॉग रिटेंशन, अलर्ट और ट्रिगर्स प्रदान करते हैं।
अंत में, यदि आप लॉग फ़ाइलों को स्वयं संग्रहित करना चाहते हैं, तो आप हेरोकू से घटनाओं की धारा प्राप्त करने और स्वयं का विश्लेषण करने के लिए अपने स्वयं के सिसलॉग नाली को सेटअप कर सकते हैं ।
सारांश: स्थिर लॉग फ़ाइलों का उपयोग heroku console
या heroku run bash
देखने के लिए न करें । अपने ऐप का उपयोग करके heroku logs
या लॉगिंग ऐड-ऑन के लिए लॉग ईवेंट की हेरोकू की धारा में पाइप ।
व्यक्तिगत स्ट्रीम / फ़िल्टर भी देखें।
उदाहरण के लिए, केवल आपके एप्लिकेशन लॉग होते हैं
heroku logs --source app -t
या केवल राउटर लॉग देखें
heroku logs --ps router
या उन्हें एक साथ जंजीर
heroku logs --source app --ps worker
बहुत अच्छा..
heroku logs --ps web.1
(1 dyno के साथ)
वैसे उपरोक्त उत्तर बहुत मददगार हैं यह आपको कमांड लाइन से देखने में मदद करेगा। जबकि यदि आप अपने GUI से करना चाहते हैं तो आपको अपने हरक खाते में लॉग इन करना होगा और फिर अपने आवेदन का चयन करना होगा और अंत में अपने लॉग इन पर क्लिक करना होगा
हरोकू लॉगिंग पर अनुसरण करें
आपके पास हमारे लॉग देखने के लिए:
heroku logs
--num
(या -n
) विकल्प दिखाएं ।
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
आप हरोकू के कमांड लाइन इंटरफ़ेस ( सीएलआई उपयोग ) का उपयोग करके अपनी लॉग फ़ाइलों तक पहुंच सकते हैं ।
यदि हरोकू का सीएलआई स्थापित है और आप अपना आवेदन नाम (जैसे https://myapp.herokuapp.com/
) जानते हैं , तो आप निम्नलिखित कमांड चला सकते हैं:
heroku logs --tail --app=myapp
आप लॉग-इन का उपयोग करके रीयल-टाइम स्ट्रीम में भी पहुँच सकते हैं:
heroku logs --source app --tail --app=myapp
यदि लॉग आपको कुछ इस तरह बताता है:
npm ईआरआर! इस रन का एक पूर्ण लॉग इन में पाया जा सकता है:
npm ईआरआर! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
तब आप उन्हें हेरोकू सीएलआई के माध्यम से बैश टर्मिनल का उपयोग करके भी एक्सेस कर सकते हैं:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
/usr/bin/less: cannot execute binary files
अपने ऐप में मुफ्त पैपराट्रिल योजना जैसी कुछ जोड़ने के लिए इसके लायक हो सकता है । शून्य कॉन्फ़िगरेशन, और आपको 10MB / दिन तक लॉगिंग डेटा के 7 दिन के मूल्य मिलते हैं, और 2 दिनों के लॉग के माध्यम से वापस खोज सकते हैं।
मेरा समाधान आवेदन शुरू होने पर पहली बार पूर्ण लॉग इन करना है, जैसे:
heroku logs -n 1500 > log
फिर fgrep -vf
इसे अप टू डेट रखने के लिए जोड़ें , जैसे:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
निरंतर लॉगिंग के लिए, हर x मिनट (या सेकंड) के लिए घड़ी का उपयोग करके इसे पुन: व्यवस्थित करें।
मैं इसे इस तरह से करना पसंद करता हूं
heroku logs --tail | tee -a herokuLogs
आप पृष्ठभूमि में चल रही स्क्रिप्ट को छोड़ सकते हैं और आप बस पाठ फ़ाइल से लॉग को फ़िल्टर कर सकते हैं जिस तरह से आप कभी भी चाहते हैं।
आपको कुछ लॉग्स को कार्यान्वित करने की आवश्यकता है और सभी लॉग को देखने के लिए (अपने ऐतिहासिक लॉग को भी प्रबंधित करें):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
और फिर अपने स्पंक सर्वर में लॉग इन करें और किसी भी संख्या में लॉग की खोज करें। मैं स्प्लंक का उपयोग कर रहा हूं और यह मेरे लिए पूरी तरह से ठीक काम कर रहा है।
दूसरा विकल्प - आप अपने ऐप में ऐड को खरीद सकते हैं, जैसे नीचे दिया गया है: (मैंने इन विकल्पों का उपयोग नहीं किया है, हालांकि ये उपलब्ध हैं)।
आप नीचे दिए गए विकल्पों पर भी नज़र डाल सकते हैं: यदि आप JSON प्रारूप में अपनी लॉग इन करना चाहते हैं, तो यह मदद करेगा यदि आप अपने लॉग्स को स्प्लंक / ELK जैसे बाहरी सिस्टम में धकेल रहे हैं, तो यह आसान हो जाएगा (प्रदर्शन बुद्धिमान भी) JSON में।
https://github.com/goodeggs/heroku-log-normalizer
यह Readme.md नहीं है, लेकिन कुछ स्पष्टीकरण https://github.com/goodeggs/bites/issues/20 पर दिया गया है
अंततः
और आप हमेशा अन्य उपयोगकर्ताओं द्वारा पहले ही बताई गई कमांड का उपयोग कर सकते हैं:
निम्न कमांड हर्को पर जेनरेटिंग लॉग्स को पूंछेगा
heroku logs -t -a <app_name>
निम्नलिखित कॉमन हंडोकू से लॉग की लाइनों की 1000 संख्या दिखाएगा
heroku logs -n 1000 -a <app_name>
ध्यान दें कि लॉग की केवल 1500 नवीनतम लाइनें उपलब्ध हैं और उनमें से बाकी हर्को डायनो से हटा दी जाती हैं।
मैं एक addon का उपयोग करने का सुझाव देता हूं, मैं Logentries का उपयोग करता हूं। इसका उपयोग करने के लिए, अपनी कमांड लाइन में दौड़ें:
heroku addons:create logentries:le_tryit
(यह कमांड एक मुफ्त खाते के लिए एडऑन बनाता है लेकिन स्पष्ट रूप से आप चाहें तो अपग्रेड कर सकते हैं)
लॉजेंट्री आपको प्रति माह लॉगजीबी के 5GB तक बचाने की अनुमति देता है। यह जानकारी पिछले 7 दिनों के भीतर उनकी कमांड खोज द्वारा खोजी जा सकती है और इसमें वास्तविक समय अलर्ट हैं।
इसलिए अपने प्रश्न का उत्तर देने के लिए, इस ऐडऑन का उपयोग करके आप यह सुनिश्चित करते हैं कि जब आप हरोकू डिफ़ॉल्ट रूप से 1500 रेखाओं तक पहुँचते हैं तो आपके लॉग अब खो नहीं जाते हैं। उम्मीद है की यह मदद करेगा! आपका दिन अच्छा रहे!
heroku logs -t
हमें लाइव लॉग दिखाता है।
heroku logs -n 1500
लॉग की विशिष्ट संख्या के लिए
लेकिन फिर भी मैं पेपर ट्रेल एड-ऑन का उपयोग करने की सिफारिश करूंगा, जिसमें कुछ लाभ हैं और मुफ्त बुनियादी योजना है।
आप उपयोग कर सकते हैं
heroku logs -n 1500
लेकिन यह अनुशंसित दृष्टिकोण नहीं है (दूसरे शब्द में आपको वास्तविक चित्र नहीं दिखाया गया है)
मैं आपको कुछ लॉगिंग टूल प्लग करने का सुझाव दूंगा। (sumoLogic, पेपर ट्रेल n सब) एक ऐड-ऑन के रूप में
उन सभी के पास एक मुफ्त संस्करण है (कुछ सीमाओं के साथ, हालांकि एक छोटे ऐप या देव एनवी के लिए पर्याप्त है, जो लॉग का विश्लेषण करने के लिए अच्छी अंतर्दृष्टि और उपकरण प्रदान करेगा)
देवदार के ढेर के लिए देखें:
https://devcenter.heroku.com/articles/oneoff-admin-ps
आपको चलाने की आवश्यकता है:
heroku चला चला ...
heroku run bash
को होस्ट करने के लिए एक नए dyno पर घूमता है bash
। उस डायनो पर फाइलसिस्टम में 'सक्रिय' वेब डायनो से कोई लॉग फाइल नहीं होगी ताकि यह दृष्टिकोण काम न करे।