เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
NocoBase มีระบบบันทึก Log ที่มีประสิทธิภาพสูง ซึ่งพัฒนาขึ้นโดยใช้ pino เป็นพื้นฐานครับ ในทุกที่ที่คุณสามารถเข้าถึง context ได้ คุณสามารถเรียกใช้งาน logger instance ได้ผ่าน ctx.logger เพื่อใช้บันทึก Log สำคัญๆ ระหว่างการทำงานของปลั๊กอินหรือระบบครับ
เมธอดเหล่านี้จะสอดคล้องกับระดับ Log ที่แตกต่างกัน (จากสูงไปต่ำ) ครับ:
| ระดับ | เมธอด | คำอธิบาย |
|---|---|---|
fatal | ctx.logger.fatal() | ข้อผิดพลาดร้ายแรง ซึ่งมักจะทำให้โปรแกรมหยุดทำงาน |
error | ctx.logger.error() | Log ข้อผิดพลาด ที่บ่งชี้ว่าคำขอหรือการดำเนินการล้มเหลว |
warn | ctx.logger.warn() | ข้อมูลเตือน ที่แจ้งเตือนถึงความเสี่ยงที่อาจเกิดขึ้น หรือสถานการณ์ที่ไม่คาดคิด |
info | ctx.logger.info() | ข้อมูลการทำงานทั่วไป |
debug | ctx.logger.debug() | ข้อมูลสำหรับดีบัก ใช้สำหรับสภาพแวดล้อมการพัฒนา |
trace | ctx.logger.trace() | ข้อมูลการติดตามอย่างละเอียด มักใช้สำหรับการวินิจฉัยเชิงลึก |
Log แต่ละรายการจะถูกส่งออกในรูปแบบ JSON ที่มีโครงสร้าง โดยมีฟิลด์ต่อไปนี้เป็นค่าเริ่มต้นครับ:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
level | number | ระดับ Log |
time | number | Timestamp (มิลลิวินาที) |
pid | number | ID ของ Process |
hostname | string | ชื่อโฮสต์ |
msg | string | ข้อความ Log |
| Others | object | ข้อมูล Context ที่กำหนดเอง |
ตัวอย่างผลลัพธ์:
ctx.logger จะทำการแทรกข้อมูล context โดยอัตโนมัติ เช่น ปลั๊กอิน โมดูล หรือแหล่งที่มาของคำขอปัจจุบัน ทำให้สามารถติดตามแหล่งที่มาของ Log ได้อย่างแม่นยำยิ่งขึ้นครับ
ตัวอย่างผลลัพธ์ (พร้อม context):
คุณสามารถสร้าง logger instance แบบกำหนดเองในปลั๊กอินได้ โดยจะสืบทอดหรือขยายการตั้งค่าเริ่มต้นครับ:
Sub-logger จะสืบทอดการตั้งค่าของ logger หลัก และแนบ context โดยอัตโนมัติครับ
ระดับ Log ของ Pino จะถูกกำหนดด้วยค่าตัวเลขจากสูงไปต่ำ โดยที่ตัวเลขยิ่งน้อย ลำดับความสำคัญก็จะยิ่งต่ำลงครับ
ด้านล่างนี้คือตารางลำดับชั้นของระดับ Log ฉบับสมบูรณ์ครับ:
| ชื่อระดับ | ค่าตัวเลข | ชื่อเมธอด | คำอธิบาย |
|---|---|---|---|
fatal | 60 | logger.fatal() | ข้อผิดพลาดร้ายแรง ซึ่งมักจะทำให้โปรแกรมไม่สามารถทำงานต่อไปได้ |
error | 50 | logger.error() | ข้อผิดพลาดทั่วไป ที่บ่งชี้ว่าคำขอล้มเหลวหรือการดำเนินการผิดปกติ |
warn | 40 | logger.warn() | ข้อมูลเตือน ที่แจ้งเตือนถึงความเสี่ยงที่อาจเกิดขึ้น หรือสถานการณ์ที่ไม่คาดคิด |
info | 30 | logger.info() | ข้อมูลทั่วไป ที่บันทึกสถานะของระบบหรือการทำงานปกติ |
debug | 20 | logger.debug() | ข้อมูลสำหรับดีบัก ใช้สำหรับการวิเคราะห์ปัญหาในขั้นตอนการพัฒนา |
trace | 10 | logger.trace() | ข้อมูลการติดตามอย่างละเอียด ใช้สำหรับการวินิจฉัยเชิงลึก |
silent | -Infinity | (ไม่มีเมธอดที่เกี่ยวข้อง) | ปิดการแสดงผล Log ทั้งหมด |
Pino จะแสดงผลเฉพาะ Log ที่มีระดับสูงกว่าหรือเท่ากับค่า level ที่ตั้งค่าไว้ในปัจจุบันเท่านั้นครับ ตัวอย่างเช่น เมื่อระดับ Log ถูกตั้งค่าเป็น info Log ระดับ debug และ trace จะถูกละเว้นครับ
ใช้ Logger ที่มี Context
ใช้ ctx.logger ใน context ของปลั๊กอิน, โมเดล หรือแอปพลิเคชัน เพื่อให้ Log มีข้อมูลแหล่งที่มาโดยอัตโนมัติครับ
แยกแยะระดับของ Log
error สำหรับบันทึกข้อผิดพลาดทางธุรกิจinfo สำหรับบันทึกการเปลี่ยนแปลงสถานะdebug สำหรับบันทึกข้อมูลการดีบักในระหว่างการพัฒนาครับหลีกเลี่ยงการบันทึก Log มากเกินไป
โดยเฉพาะอย่างยิ่งในระดับ debug และ trace แนะนำให้เปิดใช้งานเฉพาะในสภาพแวดล้อมการพัฒนาเท่านั้นครับ
ใช้ข้อมูลแบบมีโครงสร้าง
ส่งผ่านพารามิเตอร์ที่เป็นออบเจกต์แทนการต่อสตริง ซึ่งจะช่วยในการวิเคราะห์และกรอง Log ได้ง่ายขึ้นครับ
ด้วยแนวทางปฏิบัติข้างต้น นักพัฒนาจะสามารถติดตามการทำงานของปลั๊กอิน, แก้ไขปัญหา, และรักษาระบบ Log ให้มีโครงสร้างและสามารถขยายได้ดียิ่งขึ้นครับ