Nhật ký ứng dụng bằng Logging
Khi ứng dụng Backend chạy trong môi trường thực tế (Production), bạn không thể theo dõi lỗi bằng cách mở cửa sổ Terminal của máy cá nhân. Nếu hệ thống gặp sự cố, cách duy nhất để chẩn đoán và khắc phục là xem lại Nhật ký (Logs) của ứng dụng. NestJS cung cấp sẵn một lớpLogger cực kỳ mạnh mẽ để in nhật ký có màu sắc, định dạng rõ ràng kèm theo ngữ cảnh (Context) cụ thể của từng dòng code.
Tài liệu này hướng dẫn cách sử dụng Logger và cách ra lệnh cho Claude Code ghi log hệ thống tối ưu.
1. Tại sao không nên dùng console.log()?
Nhiều bạn mới học lập trình thường có thói quen dùng console.log() để in thông tin lỗi ra màn hình. Tuy nhiên, trong dự án thực tế, đây là thói quen xấu vì:
- Thiếu ngữ cảnh: Không biết dòng log đó xuất phát từ file nào, module nào.
- Không phân chia cấp độ lỗi: Tất cả log đều hiển thị giống nhau, không phân biệt được đâu là thông tin thông thường (
INFO), cảnh báo (WARN) hay lỗi nghiêm trọng (ERROR). - Khó tắt/bật: Không thể tắt bớt log ở chế độ sản xuất để giảm dung lượng lưu trữ.
2. Các cấp độ Log (Log Levels) trong NestJS
LớpLogger của NestJS chia nhật ký thành 5 cấp độ quan trọng giảm dần:
| Cấp độ Log | Phương thức | Mục đích sử dụng |
|---|---|---|
error | logger.error() | Lỗi nghiêm trọng làm gián đoạn tính năng (ví dụ: mất kết nối DB, API bên thứ ba bị sập). |
warn | logger.warn() | Cảnh báo hành vi bất thường nhưng chưa làm sập ứng dụng (ví dụ: thử đăng nhập sai nhiều lần). |
log | logger.log() | Thông tin thông thường về tiến trình hoạt động (ví dụ: Khởi động server thành công, bắt đầu đồng bộ dữ liệu). |
debug | logger.debug() | Thông tin chi tiết phục vụ quá trình dò lỗi trong lúc lập trình (ví dụ: biến X đang nhận giá trị Y). |
verbose | logger.verbose() | Nhật ký chi tiết nhất của toàn bộ luồng chạy (ít khi dùng). |
3. Cách sử dụng Logger tích hợp trong NestJS
Để sử dụng, bạn chỉ cần tạo một thực thể (instance) của Logger và truyền tên Class hiện tại vào để định danh ngữ cảnh (Context).src/products/products.service.ts
4. Hướng dẫn viết Prompt cho Claude Code tích hợp Logging
Hãy luôn yêu cầu Claude Code thêm các khối xử lý lỗitry-catch và ghi log rõ ràng ở những hàm thực thi nghiệp vụ quan trọng.