TypeScript:
การบันทึกล็อก
วิธีการ:
ใน TypeScript, คุณสามารถนำไปใช้การบันทึกข้อมูลพื้นฐานได้อย่างง่ายดายโดยใช้วิธีการของคอนโซลหรือรวมการบันทึกข้อมูลขั้นสูงกว่าด้วยไลบรารีอย่าง winston
หรือ pino
นี่คือตัวอย่างพื้นฐานโดยใช้ console.log
และตัวอย่างที่ขั้นสูงกว่าด้วย winston
// การบันทึกคอนโซลพื้นฐาน
console.log('Info: เริ่มต้นแอปพลิเคชัน...');
console.error('Error: ไม่สามารถเรียกข้อมูลได้.');
// ตัวอย่างผลลัพธ์
// Info: เริ่มต้นแอปพลิเคชัน...
// Error: ไม่สามารถเรียกข้อมูลได้.
สำหรับการบันทึกข้อมูลที่แข็งแกร่งกว่า, มาตั้งค่า winston
กัน:
import { createLogger, format, transports } from 'winston';
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
),
transports: [
new transports.Console(),
new transports.File({ filename: 'combined.log' })
]
});
logger.info('เซิร์ฟเวอร์เริ่มทำงาน!');
logger.warn('เตือนพื้นที่ดิสก์ต่ำ.');
logger.error('ไม่สามารถเชื่อมต่อกับฐานข้อมูล.');
// ตัวอย่างผลลัพธ์ใน combined.log
// 2023-01-20 14:42:07 info: เซิร์ฟเวอร์เริ่มทำงาน!
// 2023-01-20 14:42:09 warn: เตือนพื้นที่ดิสก์ต่ำ.
// 2023-01-20 14:42:12 error: ไม่สามารถเชื่อมต่อกับฐานข้อมูล.
ลงลึก:
แนวคิดของการบันทึกการเข้าใช้งานในบริบทของการคอมพิวเตอร์เริ่มแรกตั้งแต่ยุคแรก ๆ ของการเขียนโปรแกรม ซึ่งคำว่า “logbook,” ระบบบันทึกข้อมูลทางนอติคัล, เป็นที่มาของมัน ในอดีต, เหตุการณ์ของโปรแกรมมักถูกบันทึกไปยังการพิมพ์แบบกายภาพหรือการแสดงผลของเทอร์มินัล โดยเฉพาะอย่างยิ่งในยุคเมนเฟรม
ก้าวไปข้างหน้าถึงวันนี้ และคุณจะมีเครื่องมือและไลบรารีมากมายที่ให้บริการสำหรับความต้องการด้านการบันทึกข้อมูลต่าง ๆ ตั้งแต่ไฟล์ข้อความแบบง่ายไปจนถึงระบบจัดการบันทึกข้อมูลที่ซับซ้อน ทางเลือกอื่น ๆ แทน winston
ประกอบด้วย pino
ซึ่งมีประสิทธิภาพสูง, และ Bunyan
ซึ่งใช้ JSON เป็นพื้นฐาน เมื่อทำงานกับ Node.js, ไลบรารีการบันทึกมักจะให้กลไกสตรีมเพื่อกระจายบันทึกไปยังปลายทางต่าง ๆ สนับสนุนการหมุนเวียนของบันทึก, และนำเสนอตัวกำหนดรูปแบบที่กำหนดเองได้
ในแง่ของการนำไปใช้งาน, ข้อความบันทึกมักจะประกอบด้วย timestamp, ระดับความรุนแรง (เช่น info, warn, error), และข้อความจริงที่เป็นข้อความ การปฏิบัติที่ดีในการบันทึกข้อมูลแนะนำว่าควรแยกประเภทระดับความรุนแรงอย่างเหมาะสม, หลีกเลี่ยงข้อมูลที่ละเอียดอ่อนในบันทึก, และพิจารณาถึงผลกระทบด้านประสิทธิภาพในแอปพลิเคชันที่มีการจัดการข้อมูลจำนวนมาก