Tình huống
API không trả về lỗi, nhưng user lại không nhận được email. Đọc lại lần nữa nhé: API báo chạy ngon, nhưng user kêu không thấy notification đâu cả. Một sự im lặng đáng sợ. 😱
Bối cảnh
Mình xây dựng hệ thống quản trị task tương tự như Jira. Quy tắc vận hành như sau:
- Khi user tạo User Story mới → task sẽ auto link tới các user mặc định (PM, Teamleader).
- Khi user đổi status của User Story → hệ thống sẽ gửi notification cho các user liên quan.
Nghe thì đơn giản, nhưng drama ở chỗ: Sau khi tạo task và đổi status ngay lập tức → có user không nhận được notification.
Càng đau hơn: Trên dev và staging thì không thể tái hiện được lỗi này.
Vấn đề
Logging lúc đó… sơ sài như ghi nhật ký mà chỉ ghi mỗi ngày/tháng. Không có context: không biết notification đã bắn cho ai, user nào được link, thứ tự chạy step ra sao. Kết quả là: debug như mò kim đáy bể.
Giải pháp
Ban đầu, cả team đoán già đoán non: nào là lỗi queue, nào là config mailer, nào là race condition. Nhưng không log → không bằng chứng → chỉ là đoán mò.
Cuối cùng team quyết định bổ sung logger:
- Khi change status → log rõ gửi tới user nào, user ID bao nhiêu.
- Khi tạo project → log lại toàn bộ step thực hiện.
Và rồi sự thật hé lộ: Hóa ra user chỉ được link tới task sau khi task đã đổi status. Vậy nên notification đã được bắn đi… nhưng danh sách người nhận chưa đủ!
Bài học
Logging không phải để “cho có”. Nó là công cụ chẩn đoán, là ánh sáng soi đường giữa bóng tối bug.
Đừng coi thường logging, nếu không bạn sẽ phải trả giá bằng… một ngày debug đau khổ. (Trong trường hợp của mình là nguyên ngày Chủ Nhật 😭).
👉 Lời khuyên chân thành: Log có context, log đủ detail, và hãy log như thể ngày mai bạn sẽ phải debug chính mình.