Bỏ qua, đến nội dung

Câu hỏi thường gặp (FAQ) — Audit Logs ​

Sử dụng ​

Audit log ghi những gì? ​

Ghi lại tất cả thao tác create, update, delete trên các collections được cấu hình. Mỗi log entry bao gồm:

  • Ai thực hiện (userId, username)
  • Khi nào (timestamp)
  • Collection nào bị tác động
  • Hành động gì (create, update, destroy)
  • Dữ liệu thay đổi (giá trị cũ → giá trị mới cho từng field)

Có thể xem dữ liệu trước khi thay đổi không? ​

Có. Chi tiết log ghi lại giá trị trước (before) và giá trị sau (after) cho mỗi field thay đổi. Nhấn vào log entry để xem diff visual.

Hữu ích khi:

  • Cần khôi phục dữ liệu bị sửa nhầm
  • Điều tra ai đã thay đổi giá trị nào
  • Đối chiếu dữ liệu trước/sau cho compliance

Log có ảnh hưởng hiệu năng không? ​

Ảnh hưởng nhẹ — mỗi thao tác CRUD thêm 1–2 lần INSERT vào bảng audit. Để giảm thiểu:

  • Chỉ ghi log cho collections quan trọng (ví dụ: orders, users, payments)
  • Bỏ qua collections thay đổi thường xuyên nhưng không quan trọng (ví dụ: sessions, temp_data)
  • Đảm bảo bảng auditLogs và auditChanges có index phù hợp

Audit log hiển thị ở đâu? ​

Hai nơi:

  1. Settings → Audit Logs: Trang quản lý chính với đầy đủ bộ lọc
  2. Audit Logs Block: Có thể thêm vào bất kỳ trang nào qua Add Block → Audit Logs

Cấu hình ​

Làm sao chỉ log một số collections? ​

Vào Settings → Audit Logs → Configuration:

  1. Bỏ chọn "Tất cả collections"
  2. Tích chọn từng collection muốn ghi log
  3. Lưu cấu hình

Khuyến nghị

Chỉ ghi log cho collections chứa dữ liệu kinh doanh quan trọng: đơn hàng, khách hàng, sản phẩm, thanh toán, quyền truy cập. Bỏ qua collections hệ thống, temp, cache.

Database lớn vì audit logs? ​

Audit logs tích luỹ theo thời gian. Giải pháp theo mức độ ưu tiên:

#Giải phápHiệu quả
1Giảm retention period (30 ngày thay vì 90)Cao — xoá log cũ tự động
2Chỉ log collections quan trọngCao — giảm lượng log mới
3Chạy cleanup job định kỳTrung bình — xoá log theo batch
4Archive log cũ ra S3/external storageTrung bình — giữ log nhưng giảm tải DB
5Database partitioning theo thángThấp — phức tạp nhưng hiệu quả lâu dài

Có thể export audit log không? ​

Có thể qua API:

typescript
const logs = await agent.resource('auditLogs').list({
  filter: {
    createdAt: { $gte: '2024-01-01', $lte: '2024-03-31' },
    collectionName: 'orders',
  },
  pageSize: 1000,
});

Hoặc dùng chức năng export nếu plugin-export đã bật.

Lỗi thường gặp ​

Không thấy log cho một thao tác cụ thể? ​

Kiểm tra theo thứ tự:

  1. Collection có trong danh sách audit: Vào Configuration, kiểm tra collection được chọn
  2. Thao tác xảy ra sau khi bật plugin: Thao tác trước khi bật plugin không được ghi
  3. Thao tác qua API: Chỉ ghi log cho thao tác qua Digiforce API — SQL trực tiếp không ghi
  4. Bộ lọc thời gian: Đảm bảo bộ lọc thời gian bao gồm thời điểm thao tác

Log hiển thị user "system" thay vì tên user? ​

Một số thao tác được thực hiện bởi system (cron job, workflow trigger, migration) — không có user context. Đây là hành vi bình thường.

Audit log entry bị mất chi tiết thay đổi? ​

Kiểm tra:

  • Bảng auditChanges có dữ liệu cho auditLogId tương ứng
  • Field thay đổi không nằm trong danh sách excludeFields
  • Thao tác create chỉ ghi after (không có before), destroy chỉ ghi before