Giao diện
Câu hỏi thường gặp (FAQ) — Logger
Cài đặt và cấu hình
File log được lưu ở đâu?
Mặc định, file log được lưu tại ./storage/logs (tương đối với thư mục gốc Digiforce). Đường dẫn chính xác được xác định bởi @digiforce-nc/logger thông qua hàm getLoggerFilePath(). Nếu bạn chạy multi-app, mỗi app có thư mục log riêng (tên thư mục = tên app).
Plugin Logger có tạo bảng database nào không?
Không. Plugin đọc trực tiếp từ filesystem. Không có collection hay migration nào. Điều này giúp plugin nhẹ và không ảnh hưởng đến database.
Làm sao thay đổi thư mục lưu log?
Cấu hình biến môi trường LOGGER_BASE_PATH:
bash
LOGGER_BASE_PATH=/var/log/digiforceKhởi động lại server sau khi thay đổi.
Sử dụng
Làm sao xem log từ xa mà không SSH?
Đó chính là mục đích của plugin này. Vào Settings → Logger, bạn sẽ thấy cây thư mục chứa tất cả file .log. Chọn file cần thiết và nhấn Download (.tar.gz) để tải về máy local.
Có thể tìm kiếm nội dung bên trong file log không?
Hiện tại, plugin chỉ hỗ trợ tìm kiếm theo tên file (ô Search trên giao diện). Để tìm kiếm nội dung bên trong log, bạn cần:
- Tải file log về máy local
- Sử dụng công cụ tìm kiếm (grep, IDE, log viewer)
Hoặc cấu hình gửi log đến hệ thống tập trung (ELK Stack, Grafana Loki) để tìm kiếm trực tiếp.
Tính năng Diagnostic Collect hoạt động như thế nào?
Khi frontend gặp lỗi, hệ thống gọi logger:collect kèm thông tin lỗi. Server sẽ:
- Ghi thông tin lỗi và biến môi trường quan trọng vào log (
APP_ENV,APP_PORT,DB_DIALECT,LOGGER_LEVEL, v.v.) - Tìm file log mới nhất cho mỗi loại:
request,sql,system,system_error - Đóng gói và trả về
logs.tar.gz
Điều này giúp thu thập đầy đủ thông tin để debug mà không cần truy cập server.
Vận hành
File log quá lớn, làm sao xử lý?
Một số biện pháp:
| Giải pháp | Cách thực hiện |
|---|---|
| Giảm mức log | Đặt LOGGER_LEVEL=warn thay vì info hoặc debug |
| Tắt SQL log | Đặt DB_LOGGING=off (SQL log thường rất lớn) |
| Cấu hình rotation | Logger core tự động rotate theo kích thước và thời gian |
| Xoá log cũ | Xoá thủ công file log không cần thiết trong thư mục storage/logs |
Không thấy file log nào trên giao diện?
Kiểm tra theo thứ tự:
LOGGER_TRANSPORTcó bao gồmfile? Nếu chỉ cấu hìnhconsole, log không được ghi ra file- Thư mục log có tồn tại? Kiểm tra
./storage/logshoặc đường dẫn đã cấu hình - Quyền filesystem? Server cần quyền đọc/ghi vào thư mục log
- App name? Log được lưu trong thư mục con theo tên app (mặc định:
main)
Tải log bị lỗi 500 — "Download logs failed"?
Nguyên nhân có thể:
- File đã bị xoá giữa lúc liệt kê và lúc download (do rotation)
- Không đủ quyền đọc file trên server
- Dung lượng quá lớn — thử chọn ít file hơn
Kiểm tra server log (console) để xem chi tiết lỗi.
Bảo mật
Ai có quyền truy cập Logger?
Chỉ người dùng có quyền admin. Plugin đăng ký ACL snippet pm.logger với action logger:*, nghĩa là tất cả endpoint logger đều yêu cầu quyền admin.
Có rủi ro bảo mật nào khi dùng plugin này?
Plugin có các biện pháp bảo vệ:
- Path traversal check: Không cho phép truy cập file ngoài thư mục log (kiểm tra
.., absolute path, null bytes) - File type check: Chỉ cho phép file
.log - ACL: Chỉ admin truy cập được
Tuy nhiên, file log có thể chứa thông tin nhạy cảm (token, email, v.v.). Cần cẩn thận khi chia sẻ file log đã tải về.