Fish Shell:
การบันทึกล็อก
วิธีทำ:
ใน Fish, การบันทึกสามารถทำได้ง่ายด้วยการเปลี่ยนทิศทางของกระแสผลลัพธ์มาตรฐานและข้อผิดพลาดไปยังไฟล์ เรามาทำการบันทึกเวลาเริ่มต้นและเวลาสิ้นสุดของสคริปต์ของเรา
function log_start
echo (date "+%Y-%m-%d %H:%M:%S") " - สคริปต์เริ่มทำงาน" >> my_app.log
end
function log_end
echo (date "+%Y-%m-%d %H:%M:%S") " - สคริปต์สิ้นสุดการทำงาน" >> my_app.log
end
log_start
# ... งานของสคริปต์ของคุณ ...
log_end
cat my_app.log
นี่คือสิ่งที่คุณจะเห็นใน my_app.log
:
2023-04-01 10:35:47 - สคริปต์เริ่มทำงาน
2023-04-01 10:36:02 - สคริปต์สิ้นสุดการทำงาน
สำหรับการบันทึกขั้นสูง, คุณสามารถใช้ฟังก์ชันพร้อมพารามิเตอร์สำหรับระดับบันทึกและข้อความ:
function log_message --argument message
switch "$argv[1]"
case 'INFO' 'WARN' 'ERROR'
set log_level $argv[1]
case '*'
set log_level 'DEBUG'
end
set log_msg (string join " " $argv[2..-1])
echo (date "+%Y-%m-%d %H:%M:%S") "[$log_level]" $log_msg >> my_app.log
end
log_message INFO "นี่คือข้อความแบบข้อมูล"
log_message ERROR "มีบางอย่างผิดพลาด!"
ตัวอย่างการแสดงผลใน my_app.log
จะเป็น:
2023-04-01 10:35:47 [INFO] นี่คือข้อความแบบข้อมูล
2023-04-01 10:35:49 [ERROR] มีบางอย่างผิดพลาด!
ดำดิ่งลึกลงไป
ในอดีต, การบันทึกในสคริปต์ Shell ทำได้ด้วยการใช้คำสั่ง echo
อย่างมากมาย และในขณะที่นี้ยังคงเป็นตัวเลือกหนึ่ง, การนำไปใช้งานระบบที่ซับซ้อนกว่านั้นอาจเป็นความท้าทาย Fish ไม่มีระบบบันทึกอย่างเป็นทางการเช่นเดียวกับ shells หรือภาษาโปรแกรมอื่นๆ ดังนั้นบ่อยครั้งคุณต้องสร้างขึ้นเอง
ทางเลือกของคำสั่ง echo
ใน Fish สำหรับการบันทึก ได้แก่ เครื่องมือ Unix เช่น syslog
หรือ logger
ซึ่งเชื่อมต่อกับ daemon ของระบบบันทึก, ให้วิธีการที่เข้ากันได้มากขึ้นสำหรับการบันทึกเหตุการณ์ระดับระบบ
ความเรียบง่ายของ Fish ช่วยให้คุณสร้างฟังก์ชันเพื่อจัดการกับระดับความละเอียดของการบันทึก, กำหนดระดับต่างๆ ที่คุณสามารถเปิดหรือปิดได้ บางการนำไปใช้งานอาจรวมถึงชื่อสคริปต์, หมายเลขบรรทัด, และเวลาที่บันทึก, ซึ่งทำให้ง่ายต่อการติดตามกลับไปยังขั้นตอนที่นำไปสู่เหตุการณ์
ดูเพิ่มเติม
- เอกสารประกอบ Fish Shell เกี่ยวกับการเขียนฟังก์ชัน: https://fishshell.com/docs/current/#syntax-function
- คำแนะนำพื้นฐานเกี่ยวกับการเขียนสคริปต์ Shell: https://developer.ibm.com/tutorials/l-lpic1-103-4/
- คู่มือเกี่ยวกับโปรโตคอล Syslog: https://tools.ietf.org/html/rfc5424