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




logging (10)

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

heroku logs

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


Heroku घटनाओं के समय-आदेशित धाराओं के रूप में लॉग व्यवहार करता है। विभिन्न कारणों से इस तरह के वातावरण में फाइल सिस्टम पर *.log फ़ाइलों तक पहुंच की सिफारिश नहीं की जाती है।

सबसे पहले, यदि आपके ऐप में एक से अधिक dyno हैं तो प्रत्येक लॉग फ़ाइल केवल आपके ऐप की घटनाओं में आंशिक दृश्य का प्रतिनिधित्व करती है। पूर्ण दृश्य प्राप्त करने के लिए आपको सभी फ़ाइलों को मैन्युअल रूप से एकत्र करना होगा।

दूसरा, हरोकू पर फाइल सिस्टम क्षणिक अर्थ है जब भी आपका डिनो पुनरारंभ होता है या स्थानांतरित होता है (जो दिन में लगभग एक बार होता है ) लॉग फाइलें खो जाती हैं। तो आप केवल एक दिन के दृश्य को उस एकल डिनो के लॉग में प्राप्त करते हैं।

आखिरकार, सीडर स्टैक पर heroku console चला रहा heroku console या यहां तक ​​कि heroku run bash भी आपको वर्तमान में चल रहे डायनो से कनेक्ट नहीं करता है। यह विशेष रूप से bash कमांड के लिए एक नया स्पॉन्स बनाता है। इसे एक-ऑफ प्रक्रिया कहा जाता है। इस प्रकार, आपको अपने अन्य डायनोस के लिए लॉग फाइल नहीं मिलेंगी जो कि उसके HTTP heroku run लिए उत्पन्न वास्तविक http प्रक्रियाओं को heroku run

Logging , और सामान्य रूप से दृश्यता, हेरोकू पर प्रथम श्रेणी के नागरिक हैं और इन मुद्दों को हल करने वाले कई टूल हैं। सबसे पहले, सभी 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 ...

यह अभी आपके आवेदन के व्यवहार को देखने के लिए बहुत अच्छा काम करता है। यदि आप लंबे समय तक लॉग स्टोर करना चाहते हैं तो आप लॉग रिटेंशन, अलर्टिंग और ट्रिगर्स प्रदान करने वाले कई लॉगिंग ऐड-ऑन का उपयोग कर सकते हैं।

अंत में, यदि आप लॉग फाइलों को स्वयं स्टोर करना चाहते हैं तो आप हेरोोकू और पोस्ट-प्रोसेस / स्वयं विश्लेषण करने से ईवेंट की स्ट्रीम प्राप्त करने के लिए अपना स्वयं का devcenter.heroku.com/articles/logging#syslog_drains सेट कर सकते हैं।

सारांश: स्थैतिक लॉग फ़ाइलों को देखने के लिए heroku console या heroku run bash का उपयोग न करें। Heroku heroku logs या लॉगिंग ऐड-ऑन का उपयोग करके अपने ऐप के लिए heroku logs की लॉग इवेंट की स्ट्रीम में पाइप करें।


Heroku में लॉगिंग में काफी सुधार हुआ है!

$ heroku logs -n 500

बेहतर!

$ heroku logs --tail

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

UPDATED

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


अलग-अलग स्ट्रीम / फ़िल्टर भी देखें।

जैसे पूंछ केवल आपके आवेदन लॉग

heroku logs --source app -t

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

heroku logs --ps router

या उन्हें एक साथ श्रृंखला

heroku logs --source app --ps worker

बहुत अच्छा..


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

यदि Heroku की सीएलआई स्थापित है और आप अपने एप्लिकेशन का नाम जानते हैं (जैसे https://myapp.herokuapp.com/ ), तो आप निम्न आदेश चला सकते हैं:

heroku logs --tail --app=myapp

आप रीयल-टाइम स्ट्रीम में लॉग का उपयोग करके भी एक्सेस कर सकते हैं:

heroku logs --source app --tail --app=myapp

अगर लॉग आपको इस तरह कुछ बताते हैं:

एनपीएम ईआरआर! इस रन का एक पूरा लॉग इन में पाया जा सकता है:

एनपीएम ईआरआर! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

फिर आप Heroku CLI के माध्यम से बैश टर्मिनल का उपयोग करके उन्हें भी एक्सेस कर सकते हैं:

heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

मेरा समाधान पहली बार एप्लिकेशन शुरू होने पर पूर्ण लॉग प्राप्त करना है, जैसे:

heroku logs -n 1500 > log

फिर इसे अद्यतित रखने के लिए fgrep -vf जोड़ें, जैसे:

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

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


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

heroku logs --tail | tee -a herokuLogs

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


युद्ध फाइलों के लिए:

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

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

heroku logs --app appname

उम्मीद है कि यह किसी की मदद करेगा।


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

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

और फिर चलकर

heroku logs -t

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


Logging पर पालन करें

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

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

Heroku लॉग्स

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

Heroku लॉग-एन 200

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

Heroku लॉग - टेल

  1. यदि आपके पास उसकेोकू पर कई ऐप्स हैं

heroku लॉग - your_app_name करें


heroku logs -t हमें हमें लाइव लॉग दिखाता है।







logging