ฉันมีแอพเล็ก ๆ ใน heroku เมื่อใดก็ตามที่ฉันต้องการเห็นบันทึกฉันไปที่บรรทัดคำสั่งและทำ
heroku logs
นั่นแสดงให้ฉันเห็นแค่ 100 บรรทัดเท่านั้น ไม่มีวิธีดูบันทึกที่สมบูรณ์สำหรับแอปพลิเคชันของเราใน heroku หรือไม่?
ฉันมีแอพเล็ก ๆ ใน heroku เมื่อใดก็ตามที่ฉันต้องการเห็นบันทึกฉันไปที่บรรทัดคำสั่งและทำ
heroku logs
นั่นแสดงให้ฉันเห็นแค่ 100 บรรทัดเท่านั้น ไม่มีวิธีดูบันทึกที่สมบูรณ์สำหรับแอปพลิเคชันของเราใน heroku หรือไม่?
คำตอบ:
อัปเดต (ขอบคุณ dawmail333):
heroku logs -n 1500
หรือเพื่อบันทึกการถ่ายทอดสด
heroku logs -t
หากคุณต้องการมากกว่าสองสามพันบรรทัดคุณสามารถใช้ท่อระบายน้ำ Syslogของ heroku
อีกวิธีหนึ่ง (วิธีเก่า):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
มันเป็นวิธีที่ดีที่สุดใน Cedar หากคุณต้องการบรรทัดมากกว่านั้นคุณต้องมี syslog drain: devcenter.heroku.com/articles/logging#syslog_drains
heroku run rails c
มันเป็นเรื่องจริง Updated!
heroku run cat log/production.log
?
การบันทึกได้รับการปรับปรุงอย่างมากใน heroku!
$ heroku logs -n 500
ดีกว่า!
$ heroku logs --tail
การอ้างอิง: http://devcenter.heroku.com/articles/logging
ปรับปรุง
สิ่งเหล่านี้ไม่ใช่ส่วนเสริมอีกต่อไป แต่เป็นส่วนหนึ่งของฟังก์ชันการทำงานเริ่มต้น :)
Heroku ปฏิบัติต่อบันทึกเป็นกระแสข้อมูลตามเวลาที่กำหนด *.log
ไม่แนะนำให้เข้าถึงไฟล์บนระบบไฟล์ในสภาพแวดล้อมดังกล่าวด้วยเหตุผลหลายประการ
ขั้นแรกหากแอปของคุณมี dyno มากกว่าหนึ่งไฟล์ล็อกแต่ละไฟล์จะแสดงมุมมองบางส่วนเท่านั้นในเหตุการณ์ของแอปของคุณ คุณจะต้องรวมไฟล์ทั้งหมดด้วยตนเองเพื่อรับมุมมองแบบเต็ม
ประการที่สองระบบไฟล์ใน Heroku มีความหมายชั่วคราวทุกครั้งที่คุณเริ่มหรือย้ายไดโน (ซึ่งเกิดขึ้นประมาณวันละครั้ง) ) ล็อกไฟล์จะหายไป ดังนั้นคุณจะได้รับมุมมองมากที่สุดต่อวันในบันทึกของไดโนเดียว
ในที่สุดเมื่อCedar stackทำงานheroku console
หรือแม้กระทั่งheroku run bash
ไม่ได้เชื่อมต่อคุณกับ dyno ที่กำลังทำงานอยู่ มันวางไข่ใหม่สำหรับbash
คำสั่งโดยเฉพาะ สิ่งนี้เรียกว่ากระบวนการแบบครั้งเดียว ดังนั้นคุณจะไม่พบไฟล์บันทึกสำหรับ dynos อื่น ๆ ของคุณที่ใช้กระบวนการ http heroku run
ที่เกิดขึ้นจริงในหนึ่งกลับกลายสำหรับ
การบันทึกและการมองเห็นโดยทั่วไปเป็นพลเมืองชั้นหนึ่งของ Heroku และมีเครื่องมือหลายอย่างที่จัดการปัญหาเหล่านี้ ขั้นแรกเพื่อดูสตรีมแบบเรียลไทม์ของเหตุการณ์แอปพลิเคชันใน 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 ...
วิธีนี้ใช้ได้ผลดีในการสังเกตพฤติกรรมแอปพลิเคชันของคุณในตอนนี้ หากคุณต้องการจัดเก็บบันทึกเป็นระยะเวลานานคุณสามารถใช้หนึ่งในโปรแกรมเสริมการบันทึกจำนวนมากที่จัดเก็บบันทึกการแจ้งเตือนและทริกเกอร์
สุดท้ายหากคุณต้องการจัดเก็บไฟล์บันทึกด้วยตนเองคุณสามารถตั้งค่าsyslog drainของคุณเองเพื่อรับกระแสกิจกรรมจาก Heroku และโพสต์กระบวนการ / วิเคราะห์ตัวเอง
สรุป: อย่าใช้heroku console
หรือheroku run bash
ดูไฟล์บันทึกแบบคงที่ ไปที่สตรีมกิจกรรมการบันทึกของ Heroku สำหรับแอปของคุณโดยใช้heroku logs
หรือ Add-on การบันทึก
ดูสตรีม / ตัวกรองแต่ละรายการ
เช่นบันทึกเฉพาะแอปพลิเคชันของคุณเท่านั้น
heroku logs --source app -t
หรือดูเฉพาะบันทึกของเราเตอร์
heroku logs --ps router
หรือโซ่พวกเขาเข้าด้วยกัน
heroku logs --source app --ps worker
ดีมาก..
heroku logs --ps web.1
(ด้วย 1 dyno)
คำตอบข้างต้นมีประโยชน์มากมันจะช่วยให้คุณดูจากบรรทัดคำสั่ง ในกรณีที่คุณต้องการทำจาก GUI ของคุณคุณต้องลงชื่อเข้าใช้บัญชี heroku ของคุณจากนั้นเลือกแอปพลิเคชันของคุณและสุดท้ายคลิกที่ดูบันทึก
ติดตามการบันทึกของ Heroku
ในการดูบันทึกของคุณเรามี:
heroku logs
--num
(หรือ-n
)
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
คุณสามารถเข้าถึงไฟล์บันทึกของคุณโดยใช้ Command Line Interface ( การใช้งาน CLI) )
หากติดตั้ง CLI ของ Heroku และคุณรู้จักชื่อแอปพลิเคชันของคุณ (เช่น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
จากนั้นคุณสามารถเข้าถึงได้โดยใช้เทอร์มินัล bash ผ่าน Heroku CLI:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
/usr/bin/less: cannot execute binary files
อาจคุ้มค่าที่จะเพิ่มบางอย่างเช่นแผน Papertrail ฟรีในแอปของคุณ การกำหนดค่าเป็นศูนย์และคุณจะได้รับข้อมูลการบันทึก 7 วันสูงสุด 10MB / วันและสามารถค้นหาบันทึกย้อนหลังได้ 2 วัน
สำหรับไฟล์ WAR:
ฉันไม่ได้ใช้ github แต่ฉันอัปโหลดโดยตรงเป็นไฟล์ WAR (ซึ่งฉันพบว่าง่ายกว่าและเร็วกว่า)
ดังนั้นต่อไปนี้ช่วยฉัน:
heroku logs --app appname
หวังว่ามันจะช่วยใครซักคน
คุณต้องใช้-t
หรือ--tail
ตัวเลือกและคุณต้องกำหนดชื่อแอพ heroku ของคุณ
heroku logs -t --app app_name
ทางออกของฉันคือการได้รับบันทึกที่สมบูรณ์ในครั้งแรกที่แอปพลิเคชันเริ่มต้นเช่น
heroku logs -n 1500 > log
จากนั้นเพิ่มfgrep -vf
เพื่อให้เป็นปัจจุบันเช่น:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
สำหรับการบันทึกอย่างต่อเนื่องเพียงทำซ้ำโดยใช้ watch ทุก ๆ x นาที (หรือวินาที)
หากต้องการดูบันทึกโดยละเอียดคุณต้องใส่สองบรรทัดในproduction.rb
ไฟล์:
config.logger = Logger.new(STDOUT)
config.logger.level = Logger::DEBUG
จากนั้นโดยการเรียกใช้
heroku logs -t
คุณสามารถดูบันทึกโดยละเอียด
ฉันชอบที่จะทำแบบนี้
heroku logs --tail | tee -a herokuLogs
คุณสามารถปล่อยให้สคริปต์ทำงานในพื้นหลังและคุณสามารถกรองบันทึกจากไฟล์ข้อความตามที่คุณต้องการได้ตลอดเวลา
คุณต้องมีบันทึกการระบายน้ำที่นำมาใช้และควรจะมีบันทึกของคุณที่นั่นเพื่อดูบันทึกทั้งหมด (จัดการบันทึกประวัติด้วย):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
จากนั้นเข้าสู่เซิร์ฟเวอร์ splunk ของคุณและค้นหาบันทึกจำนวนเท่าใดก็ได้ ฉันใช้ Splunk แล้วและนี่ก็ใช้ได้ดีสำหรับฉัน
ตัวเลือกที่สอง - คุณสามารถซื้อเพิ่มในแอพของคุณได้ตามที่ระบุด้านล่าง: (ฉันไม่ได้ใช้ตัวเลือกเหล่านี้ แต่เป็นตัวเลือกที่มีให้)
นอกจากนี้คุณยังสามารถดูตัวเลือกด้านล่าง: หากคุณต้องการให้บันทึกของคุณอยู่ในรูปแบบ JSON ซึ่งจะช่วยหากคุณกำลังผลักดันบันทึกของคุณไปยังระบบภายนอกเช่น Splunk / ELK มันจะกลายเป็นเรื่องง่าย ใน JSON
https://github.com/goodeggs/heroku-log-normalizer
ไม่มี Readme.md แต่มีคำอธิบายบางอย่างที่https://github.com/goodeggs/bites/issues/20
ในที่สุด
และคุณสามารถใช้คำสั่งด้านล่างตามที่ผู้ใช้รายอื่นกล่าวถึงไว้แล้ว:
คำสั่งต่อไปนี้จะจัดทำบันทึกการใช้งานใน Heroku
heroku logs -t -a <app_name>
COMAND ต่อไปนี้จะแสดงให้เห็นถึง1000จำนวนบรรทัดของบันทึกจาก Heroku
heroku logs -n 1000 -a <app_name>
หมายเหตุมีเพียง 1500 บรรทัดของบันทึกล่าสุดเท่านั้นและส่วนที่เหลือจะถูกลบออกจาก heroku dyno
ฉันขอแนะนำให้ใช้ addon ฉันใช้ Logentries หากต้องการใช้งานให้รันในบรรทัดคำสั่งของคุณ:
heroku addons:create logentries:le_tryit
(คำสั่งนั้นสร้าง addon สำหรับบัญชีฟรี แต่คุณสามารถอัพเกรดได้อย่างชัดเจนหากคุณต้องการ)
Logentries ช่วยให้คุณบันทึกปริมาณการบันทึกได้สูงสุด 5GB ต่อเดือน ข้อมูลดังกล่าวสามารถค้นหาได้โดยการค้นหาคำสั่งภายใน 7 วันที่ผ่านมาและมีการแจ้งเตือนแบบเรียลไทม์
ดังนั้นเพื่อตอบคำถามของคุณโดยใช้ addon นี้คุณมั่นใจได้ว่าบันทึกของคุณจะไม่สูญหายอีกต่อไปเมื่อคุณไปถึง 1500 บรรทัดที่ Heroku บันทึกโดยค่าเริ่มต้น หวังว่านี่จะช่วยได้! ขอให้มีความสุขมาก ๆ ในวันนี้!
heroku logs -t
แสดงให้เราเห็นบันทึกสด
heroku logs -n 1500
สำหรับจำนวนบันทึกที่เฉพาะเจาะจง
แต่ถึงกระนั้นฉันขอแนะนำให้ใช้ add-on ทางกระดาษซึ่งมีประโยชน์บางอย่างและมีแผนขั้นพื้นฐานฟรี
คุณสามารถใช้ได้
heroku logs -n 1500
แต่นี่ไม่ใช่วิธีที่แนะนำ (ในคำอื่น ๆ ไม่ได้แสดงภาพจริง)
ฉันขอแนะนำให้คุณเสียบเครื่องมือการบันทึกบางอย่าง (sumoLogic, paper trail n all) เป็นส่วนเสริม
พวกเขาทั้งหมดมีรุ่นฟรี (มีข้อ จำกัด เล็กน้อย แต่เพียงพอสำหรับแอปขนาดเล็กหรือ dev env ซึ่งจะให้ข้อมูลเชิงลึกที่ดีและเครื่องมือในการวิเคราะห์บันทึก)
สำหรับซีดาร์สแต็คดู:
https://devcenter.heroku.com/articles/oneoff-admin-ps
คุณต้องเรียกใช้:
heroku ทำงานทุบตี ...
heroku run bash
หมุนไดนาโมใหม่เพื่อโฮสต์bash
คำสั่ง ระบบไฟล์บน dyno นั้นจะไม่มีไฟล์บันทึกใด ๆ จาก dynos ของเว็บ 'ที่ใช้งานอยู่' ดังนั้นวิธีการนี้จะไม่ทำงาน