heroku - सभी लॉग कैसे देखें


468

मेरे पास हरकू पर एक छोटा सा ऐप है। जब भी मैं लॉग देखना चाहता हूं मैं कमांड लाइन पर जाता हूं और करता हूं

heroku logs

यह केवल मुझे लगभग 100 लाइनें दिखाता है। क्या हर्को पर हमारे आवेदन के लिए पूर्ण लॉग देखने का कोई तरीका नहीं है?

जवाबों:


784

अद्यतन (dawmail333 के लिए धन्यवाद):

heroku logs -n 1500

या, लॉग को लाइव करने के लिए पूंछ

heroku logs -t 

हरोकू लॉग दस्तावेज

यदि आपको कुछ हज़ार से अधिक लाइनों की आवश्यकता है तो आप हेरोकू के सिसलॉग नालियों का उपयोग कर सकते हैं

वैकल्पिक रूप से (पुरानी विधि):

$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }

5
यह अब देवदार के ढेर पर काम नहीं कर रहा है। क्या किसी को कोई नया विकल्प मिला है?
नथनवदा

2
बस उपयोग heroku logs -n 1500, यह देवदार पर उपलब्ध सबसे अच्छा तरीका है। यदि आपको उससे अधिक लाइनें चाहिए, तो आपको एक syslog ड्रेन की आवश्यकता है: devcenter.heroku.com/articles/log#syslog_drains
Liam Dawson

यह एसेट पाइपलाइन मुद्दों के लिए भी एक उपयोगी टिप है: हर्को लॉग्स -n 2000 | grep 'precompiled'
डेव कोलिन्स

यह वास्तव में है heroku run rails c। अपडेट किया गया!
ग्लीबम

3
पुरानी पद्धति के लिए, आप केवल रेल के बजाय रेल कंसोल क्यों चलाएंगे heroku run cat log/production.log?
च्लोए

139

लॉगिंग से हेरोकू में बहुत सुधार हुआ है!

$ heroku logs -n 500

बेहतर!

$ heroku logs --tail

संदर्भ: http://devcenter.heroku.com/articles/log

UPDATED

ये अब ऐड-ऑन नहीं हैं, लेकिन डिफ़ॉल्ट कार्यक्षमता का हिस्सा है :)


4
इसके अलावा, एक 1500 तक जा सकता है, मुझे लगता है कि हरोकू उसके बाद कुछ भी काट देता है।
लियाम डॉसन

52

हेरोकू समय-क्रम की घटनाओं के रूप में लॉग का व्यवहार करता है। *.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या लॉगिंग ऐड-ऑन के लिए लॉग ईवेंट की हेरोकू की धारा में पाइप ।


23

व्यक्तिगत स्ट्रीम / फ़िल्टर भी देखें।

उदाहरण के लिए, केवल आपके एप्लिकेशन लॉग होते हैं

heroku logs --source app -t

या केवल राउटर लॉग देखें

heroku logs --ps router

या उन्हें एक साथ जंजीर

heroku logs --source app --ps worker

बहुत अच्छा..


5
मेरे आवेदन के केवल लॉग देखने के लिए: heroku logs --ps web.1(1 dyno के साथ)
अधिकतम

22

वैसे उपरोक्त उत्तर बहुत मददगार हैं यह आपको कमांड लाइन से देखने में मदद करेगा। जबकि यदि आप अपने GUI से करना चाहते हैं तो आपको अपने हरक खाते में लॉग इन करना होगा और फिर अपने आवेदन का चयन करना होगा और अंत में अपने लॉग इन पर क्लिक करना होगा

छवि देखें


1
यह विधि केवल आपको लॉग आउटपुट दिखाती है, जैसा कि वे "व्यू लॉग" विकल्प पर क्लिक करने के समय से शुरू करते हैं। यह तब तक उपयोगी नहीं है जब तक कि आप केवल कंसोल में जाने के बिना लॉग को अनिवार्य रूप से पूंछना चाहते हैं।
जेरेमी गंटर

2
क्या इस UI से सभी लॉग देखने का कोई विकल्प नहीं है?
सुनील गर्ग

16

हरोकू लॉगिंग पर अनुसरण करें

आपके पास हमारे लॉग देखने के लिए:

  1. लॉग कमांड डिफ़ॉल्ट रूप से 100 लॉग लाइनों को पीछे हटा देती है।

heroku logs

  1. अधिकतम 1500 लाइनें, --num(या -n) विकल्प दिखाएं ।

heroku logs -n 200

  1. वास्तविक समय में लॉग दिखाएं

heroku logs --tail

  1. अगर आपके पास heroku पर कई ऐप हैं

heroku logs --app your_app_name



8

आप हरोकू के कमांड लाइन इंटरफ़ेस ( सीएलआई उपयोग ) का उपयोग करके अपनी लॉग फ़ाइलों तक पहुंच सकते हैं ।

यदि हरोकू का सीएलआई स्थापित है और आप अपना आवेदन नाम (जैसे 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
माइकल फुल्टन

7

अपने ऐप में मुफ्त पैपराट्रिल योजना जैसी कुछ जोड़ने के लिए इसके लायक हो सकता है । शून्य कॉन्फ़िगरेशन, और आपको 10MB / दिन तक लॉगिंग डेटा के 7 दिन के मूल्य मिलते हैं, और 2 दिनों के लॉग के माध्यम से वापस खोज सकते हैं।


4

WAR फ़ाइलों के लिए:

मैंने जीथब का उपयोग नहीं किया, इसके बजाय मैंने सीधे अपलोड किया, एक डब्ल्यूएआर फ़ाइल (जो मुझे बहुत आसान और तेज लगती थी)।

तो निम्नलिखित ने मेरी मदद की:

heroku logs --app appname

आशा है कि यह किसी की मदद करेगा।


4

आपको उपयोग -tया --tailविकल्प की आवश्यकता है और आपको अपने हरोकू ऐप नाम को परिभाषित करने की आवश्यकता है।

heroku logs -t --app app_name

4

मेरा समाधान आवेदन शुरू होने पर पहली बार पूर्ण लॉग इन करना है, जैसे:

heroku logs -n 1500 > log

फिर fgrep -vfइसे अप टू डेट रखने के लिए जोड़ें , जैसे:

heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log

निरंतर लॉगिंग के लिए, हर x मिनट (या सेकंड) के लिए घड़ी का उपयोग करके इसे पुन: व्यवस्थित करें।


2

विस्तृत लॉग देखने के लिए आपको production.rbफ़ाइल में दो लाइनें डालने की आवश्यकता है :

config.logger = Logger.new(STDOUT)
config.logger.level = Logger::DEBUG

और फिर दौड़ कर

heroku logs -t

आप विस्तृत लॉग देख सकते हैं।


2

मैं इसे इस तरह से करना पसंद करता हूं

heroku logs --tail | tee -a herokuLogs

आप पृष्ठभूमि में चल रही स्क्रिप्ट को छोड़ सकते हैं और आप बस पाठ फ़ाइल से लॉग को फ़िल्टर कर सकते हैं जिस तरह से आप कभी भी चाहते हैं।


धन्यवाद, मुझे स्क्रॉल करने में थोड़ा समय लगा, लेकिन अंत में मेरे लिए समाधान मिल गया।
दोपहर

2

आपको कुछ लॉग्स को कार्यान्वित करने की आवश्यकता है और सभी लॉग को देखने के लिए (अपने ऐतिहासिक लॉग को भी प्रबंधित करें):

  1. पहला विकल्प - स्प्लंक का उपयोग किया जा सकता है: आप अपने सभी लॉग को हटा सकते हैं जैसे:
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name

और फिर अपने स्पंक सर्वर में लॉग इन करें और किसी भी संख्या में लॉग की खोज करें। मैं स्प्लंक का उपयोग कर रहा हूं और यह मेरे लिए पूरी तरह से ठीक काम कर रहा है।

  1. दूसरा विकल्प - आप अपने ऐप में ऐड को खरीद सकते हैं, जैसे नीचे दिया गया है: (मैंने इन विकल्पों का उपयोग नहीं किया है, हालांकि ये उपलब्ध हैं)।

    • Timber.io
    • सूमो तर्क
    • LogEnteries
    • डीएनए लॉग करें
    • कागज का पुछल्ला

आप नीचे दिए गए विकल्पों पर भी नज़र डाल सकते हैं: यदि आप 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 नवीनतम लाइनें उपलब्ध हैं और उनमें से बाकी हर्को डायनो से हटा दी जाती हैं।


1

मैं एक addon का उपयोग करने का सुझाव देता हूं, मैं Logentries का उपयोग करता हूं। इसका उपयोग करने के लिए, अपनी कमांड लाइन में दौड़ें:

heroku addons:create logentries:le_tryit

(यह कमांड एक मुफ्त खाते के लिए एडऑन बनाता है लेकिन स्पष्ट रूप से आप चाहें तो अपग्रेड कर सकते हैं)

लॉजेंट्री आपको प्रति माह लॉगजीबी के 5GB तक बचाने की अनुमति देता है। यह जानकारी पिछले 7 दिनों के भीतर उनकी कमांड खोज द्वारा खोजी जा सकती है और इसमें वास्तविक समय अलर्ट हैं।

इसलिए अपने प्रश्न का उत्तर देने के लिए, इस ऐडऑन का उपयोग करके आप यह सुनिश्चित करते हैं कि जब आप हरोकू डिफ़ॉल्ट रूप से 1500 रेखाओं तक पहुँचते हैं तो आपके लॉग अब खो नहीं जाते हैं। उम्मीद है की यह मदद करेगा! आपका दिन अच्छा रहे!


1

heroku logs -t हमें लाइव लॉग दिखाता है। heroku logs -n 1500लॉग की विशिष्ट संख्या के लिए

लेकिन फिर भी मैं पेपर ट्रेल एड-ऑन का उपयोग करने की सिफारिश करूंगा, जिसमें कुछ लाभ हैं और मुफ्त बुनियादी योजना है।


0

आप उपयोग कर सकते हैं heroku logs -n 1500

लेकिन यह अनुशंसित दृष्टिकोण नहीं है (दूसरे शब्द में आपको वास्तविक चित्र नहीं दिखाया गया है)

मैं आपको कुछ लॉगिंग टूल प्लग करने का सुझाव दूंगा। (sumoLogic, पेपर ट्रेल n सब) एक ऐड-ऑन के रूप में

उन सभी के पास एक मुफ्त संस्करण है (कुछ सीमाओं के साथ, हालांकि एक छोटे ऐप या देव एनवी के लिए पर्याप्त है, जो लॉग का विश्लेषण करने के लिए अच्छी अंतर्दृष्टि और उपकरण प्रदान करेगा)


-2

देवदार के ढेर के लिए देखें:

https://devcenter.heroku.com/articles/oneoff-admin-ps

आपको चलाने की आवश्यकता है:

heroku चला चला ...


9
देवदार कमांड heroku run bashको होस्ट करने के लिए एक नए dyno पर घूमता है bash। उस डायनो पर फाइलसिस्टम में 'सक्रिय' वेब डायनो से कोई लॉग फाइल नहीं होगी ताकि यह दृष्टिकोण काम न करे।
रयान डेगल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.