Logger - Nhật ký
NocoBase cung cấp một hệ thống log hiệu năng cao dựa trên pino. Tại bất kỳ nơi nào có context, bạn đều có thể lấy instance logger thông qua ctx.logger để ghi lại các log quan trọng trong runtime của Plugin hoặc hệ thống.
Cách dùng cơ bản
Các phương thức này tương ứng với các cấp độ log khác nhau (từ cao xuống thấp):
Định dạng log
Mỗi dòng log đầu ra là định dạng JSON có cấu trúc, mặc định bao gồm các trường sau:
Ví dụ đầu ra:
Gắn context
ctx.logger sẽ tự động đưa thông tin context vào, ví dụ Plugin, module hiện tại hoặc nguồn yêu cầu, giúp log truy vết nguồn gốc chính xác hơn.
Ví dụ đầu ra (kèm context):
Logger tùy chỉnh
Bạn có thể tạo instance logger tùy chỉnh trong Plugin, kế thừa hoặc mở rộng cấu hình mặc định:
Logger con sẽ kế thừa cấu hình của logger chính và tự động đính kèm context.
Phân chia cấp độ log
Các cấp độ log của Pino tuân theo định nghĩa số từ cao đến thấp, số càng nhỏ thì độ ưu tiên càng thấp.
Dưới đây là bảng phân chia cấp độ log đầy đủ:
Pino chỉ xuất các log có cấp độ lớn hơn hoặc bằng cấu hình level hiện tại. Ví dụ, khi cấp độ log là info, các log debug và trace sẽ bị bỏ qua.
Best practices trong phát triển Plugin
-
Sử dụng log có context
Sử dụngctx.loggertrong context của Plugin, model hoặc app để tự động mang theo thông tin nguồn gốc. -
Phân biệt cấp độ log
- Dùng
errorđể ghi lỗi nghiệp vụ - Dùng
infođể ghi thay đổi trạng thái - Dùng
debugđể ghi thông tin debug khi phát triển
- Dùng
-
Tránh log quá nhiều
Đặc biệt ở cấp độdebugvàtrace, khuyến nghị chỉ bật trong môi trường phát triển. -
Sử dụng dữ liệu có cấu trúc
Truyền tham số dạng object thay vì nối chuỗi, giúp phân tích và lọc log dễ hơn.
Thông qua các cách trên, nhà phát triển có thể truy vết quy trình thực thi Plugin hiệu quả hơn, gỡ lỗi và giữ cho hệ thống log có cấu trúc và dễ mở rộng.

