0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Khám Phá logger.ts trong mã nguồn mcp-mermaid

Đăng vào 1 tháng trước

• 3 phút đọc

Giới Thiệu

Trong bài viết này, chúng ta sẽ cùng nhau khám phá tệp logger.ts trong mã nguồn của dự án mcp-mermaid. Logger là một phần quan trọng giúp các lập trình viên theo dõi và ghi lại thông tin trong ứng dụng của họ. Việc xây dựng một logger nhất quán giúp cải thiện khả năng bảo trì và phát hiện lỗi trong mã nguồn.

Mục Đích của logger.ts

Việc định nghĩa một logger thống nhất cho toàn bộ mã nguồn là một thực tiễn tốt. Nhiều dự án mã nguồn mở (OSS) đã sử dụng các gói npm như colors hoặc picocolors để áp dụng màu sắc cho các log, nhưng điều này thường chỉ áp dụng trong CLI (Giao diện Dòng lệnh).

Bạn sẽ thấy đoạn chú thích dưới đây trong tệp mcp-mermaid/src/utils/logger.ts:

typescript Copy
/**
 * Logger thống nhất để ghi log nhất quán trong toàn ứng dụng
 */
const prefix = "[MCP-Mermaid]";

Các Phương Thức Được Định Nghĩa

Các phương thức như info, warn, errorsuccess được định nghĩa như sau:

typescript Copy
/**
 * Ghi log thông tin
 */
export function info(message: string, ...args: unknown[]): void {
  console.log(`${prefix} ℹ️  ${message}`, ...args);
}

/**
 * Ghi log cảnh báo
 */
export function warn(message: string, ...args: unknown[]): void {
  console.warn(`${prefix} ⚠️  ${message}`, ...args);
}

/**
 * Ghi log lỗi
 */
export function error(message: string, error?: unknown): void {
  console.error(`${prefix} ❌ ${message}`, error || "");
}

/**
 * Ghi log thành công
 */
export function success(message: string, ...args: unknown[]): void {
  console.log(`${prefix} ✅ ${message}`, ...args);
}

Phương Thức serverStartup

Để ghi lại thông tin khởi động của server, chúng ta có phương thức sau:

typescript Copy
/**
 * Ghi log thông tin khởi động server
 */
export function serverStartup(
  serverType: string,
  port: number,
  endpoint: string,
): void {
  const serverUrl = `http://localhost:${port}${endpoint}`;
  const healthUrl = `http://localhost:${port}/health`;
  const pingUrl = `http://localhost:${port}/ping`;

  console.log(
    `${prefix} 🚀 ${serverType} đang chạy tại: \x1b[32m\u001B[4m${serverUrl}\u001B[0m\x1b[0m`,
  );
  console.log("\nCác điểm kiểm tra:");
  console.log(`• Kiểm tra sức khỏe: \u001B[4m${healthUrl}\u001B[0m`);
  console.log(`• Kiểm tra kết nối: \u001B[4m${pingUrl}\u001B[0m`);
}

Phương Thức cleanup

Phương thức này được sử dụng để ghi lại thông tin dọn dẹp:

typescript Copy
/**
 * Ghi log thông tin dọn dẹp
 */
export function cleanup(message: string): void {
  console.log(`${prefix} 🧹 ${message}`);
}

/**
 * Đối tượng Logger để tương thích ngược
 */
export const Logger = {
  info,
  warn,
  error,
  success,
  serverStartup,
  cleanup,
};

Thực Hành Tốt Nhất

  • Sử dụng tiền tố: Luôn sử dụng tiền tố cho các log để dễ dàng tìm kiếm và phân loại.
  • Ghi log theo mức độ: Phân chia các loại log thành thông tin, cảnh báo, lỗi và thành công để dễ dàng xử lý.
  • Đảm bảo tính nhất quán: Thống nhất cách ghi log trên toàn bộ ứng dụng để giúp cho việc bảo trì dễ dàng hơn.

Những Cạm Bẫy Thường Gặp

  • Ghi log quá mức: Ghi quá nhiều thông tin không cần thiết có thể dẫn đến việc làm chậm ứng dụng và khó khăn trong việc tìm kiếm thông tin cần thiết.
  • Thiếu thông tin: Đôi khi, việc không ghi lại đủ thông tin có thể làm khó khăn cho việc gỡ lỗi.

Mẹo Tối Ưu Hiệu Suất

  • Ghi log bất đồng bộ: Sử dụng các phương thức ghi log bất đồng bộ để không làm chậm quá trình thực thi của ứng dụng.
  • Lưu trữ log: Xem xét việc lưu trữ log vào file hoặc dịch vụ bên ngoài thay vì chỉ ghi trên console.

Khắc Phục Sự Cố

Nếu bạn gặp vấn đề với logger, hãy kiểm tra:

  • Cấu trúc của các thông điệp log có rõ ràng và dễ hiểu không?
  • Các mức độ log có được sử dụng hợp lý không?

Kết Luận

Logger là một phần quan trọng trong bất kỳ ứng dụng nào. Việc hiểu rõ cách thức hoạt động và cách sử dụng logger một cách hiệu quả sẽ giúp bạn phát triển ứng dụng tốt hơn và dễ dàng hơn trong việc gỡ lỗi. Hãy thử áp dụng những kiến thức trên vào dự án của bạn ngay hôm nay!

Câu Hỏi Thường Gặp (FAQ)

1. Tại sao lại cần một logger thống nhất?
Logger thống nhất giúp đảm bảo rằng tất cả các thông tin ghi lại đều có cấu trúc và dễ hiểu, giúp cho việc theo dõi và gỡ lỗi dễ dàng hơn.

2. Làm thế nào để cải thiện hiệu suất của logger?
Sử dụng ghi log bất đồng bộ và lưu trữ log vào file hoặc dịch vụ ngoài thay vì chỉ ghi trên console.

Tham Khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào