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 auditLogsauditChangesindex 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