ตลอดไปเก็บเอาท์พุท console.log ไว้ที่ไหน


106

ฉันติดตั้งตลอดไปและใช้งานอยู่พบว่ามันค่อนข้างตลก

แต่ฉันรู้ว่าท่อนไม้ถูกวางไว้ที่อื่น มีเคล็ดลับอะไรไหม?

คำตอบ:


136

Forever ใช้ตัวเลือกบรรทัดคำสั่งสำหรับเอาต์พุต:

-l  LOGFILE      Logs the forever output to LOGFILE
-o  OUTFILE      Logs stdout from child script to OUTFILE
-e  ERRFILE      Logs stderr from child script to ERRFILE

ตัวอย่างเช่น:

forever start -o out.log -e err.log my-script.js

ดูข้อมูลเพิ่มเติมได้ที่นี่


7
เส้นทางเริ่มต้นคืออะไรถ้าฉันไม่ระบุพารามิเตอร์ใด ๆ แต่ใช้เพียง like forever myapp? ขอบคุณ!
AGamePlayer

3
ฉันไม่เห็นเอกสาร - ฉันคิดว่ามันเปลี่ยนไปตามกาลเวลา ฉันเห็นบันทึกเก่าในโฟลเดอร์ ~ / .forever แต่ฉันอัปเดตเมื่อเร็ว ๆ นี้และอย่างน้อยก็บน mac ของฉันถ้าฉันไม่ระบุชื่อไฟล์บันทึกมันจะเขียน console.log ไปที่เทอร์มินัล
bryanmac

1
-a จำเป็นต้องใช้เป็นตัวเลือกหากมีไฟล์อยู่แล้ว ตลอดไป -a -o out.log -e err.log my-script.js
swateek

2
อะไรคือความแตกต่างระหว่าง LOGFILE และ OUTFILE? สำหรับฉันดูเหมือนว่าพวกเขามีข้อมูลเดียวกันเป๊ะ!
Dominic

3
@Dominic LOGFILE รวมเอาท์พุททั้งหมดรวมถึงเอาต์พุตจากกระบวนการตลอดไป OUTFILE รวมเฉพาะ stdout จากสคริปต์ลูกของคุณ
238

81

ตลอดไปโดยค่าเริ่มต้นจะใส่บันทึกลงในไฟล์แบบสุ่มใน~/.forever/โฟลเดอร์

คุณควรเรียกใช้forever listเพื่อดูกระบวนการทำงานและไฟล์บันทึกที่เกี่ยวข้อง

เอาต์พุตตัวอย่าง

>>> forever list
info:    Forever processes running
data:        uid  command       script forever pid  logfile                         uptime
data:    [0] 6n71 /usr/bin/node app.js 2233    2239 /home/vagrant/.forever/6n71.log 0:0:0:1.590

อย่างไรก็ตามควรระบุด้วย-lbryanmac ตามที่กล่าวไว้


1
ไม่ใช่ไฟล์แบบสุ่มเสมอไป หากคุณระบุ uid ด้วยแฟล็ก --uid เมื่อเริ่มต้นระบบจะสร้างไฟล์บันทึกโดยใช้ uid ที่ระบุ
ddelrio1986


12

ลองใช้คำสั่ง

> forever logs

หรือ

> sudo forever logs

คุณจะได้รับตำแหน่งของไฟล์บันทึก



5

ต้องทำตามปกติ forever start script.js เพื่อเริ่มต้นและในการตรวจสอบคอนโซล / บันทึกข้อผิดพลาดใช้ forever logs สิ่งนี้จะพิมพ์รายการบันทึกทั้งหมดที่เก็บไว้ตลอดไปจากนั้นคุณสามารถใช้งานได้tail -f /path/to/logs/file.logและจะพิมพ์บันทึกสดไปยังหน้าต่างของคุณ กด ctrl + z เพื่อหยุดพิมพ์บันทึก


3

มันเป็นคำถามเก่า แต่ฉันพบปัญหาเดียวกัน หากคุณต้องการดูผลลัพธ์แบบสดคุณสามารถเรียกใช้

forever logs

สิ่งนี้จะแสดงเส้นทางของไฟล์บันทึกรวมทั้งหมายเลขของสคริปต์ จากนั้นคุณสามารถใช้

forever logs 0 -f

ควรแทนที่ 0 ด้วยหมายเลขของสคริปต์ที่คุณต้องการดูผลลัพธ์


1

ความช่วยเหลือเป็นผู้ช่วยที่ดีที่สุดของคุณมีการดำเนินการบันทึกที่คุณสามารถเรียกตรวจสอบบันทึกสำหรับกระบวนการที่กำลังทำงานอยู่ทั้งหมด

forever --help

แสดงคำสั่ง

logs                Lists log files for all forever processes
logs <script|index> Tails the logs for <script|index>

ตัวอย่างผลลัพธ์ของคำสั่งด้านบนสำหรับสามกระบวนการที่กำลังทำงานอยู่ เอาต์พุตconsole.logจะถูกเก็บไว้ในบันทึกเหล่านี้

info:    Logs for running Forever processes
data:        script    logfile
data:    [0] server.js /root/.forever/79ao.log
data:    [1] server.js /root/.forever/ZcOk.log
data:    [2] server.js /root/.forever/L30K.log

1

ตามค่าเริ่มต้นตลอดไปจะวางไฟล์ทั้งหมดที่ต้องการลงใน /$HOME/.forever หากคุณต้องการเปลี่ยนตำแหน่งนั้นเพียงแค่ตั้งค่าตัวแปรสภาพแวดล้อม FOREVER_ROOT เมื่อคุณทำงานตลอดไป:

FOREVER_ROOT=/etc/forever forever start index.js

0

คุณต้องเพิ่มตัวระบุปลายทางของบันทึกก่อนที่จะเรียกใช้ชื่อไฟล์ ดังนั้น

ตลอดไป -e /path/error.txt -o /path/output.txt เริ่มต้น index.js


0

จากคำตอบของ bryanmac ฉันแค่บันทึกบันทึกทั้งหมดลงในไฟล์เดียวจากนั้นอ่านด้วย tail วิธีง่ายๆ แต่ได้ผลจริง

forever -o common.log -e common.log index.js && tail -f common.log

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.