Logging trong Spring Boot: Logback và dùng đúng các mức log
21/07/2026
Log là con mắt của bạn khi ứng dụng chạy trên production. Spring Boot dùng Logback qua SLF4J mặc định. Vấn đề không phải thiếu log, mà là log đúng mức và đúng thông tin.
Năm mức log và khi nào dùng
- ERROR: lỗi cần người can thiệp — exception không xử lý được, phụ thuộc chết
- WARN: bất thường nhưng vẫn chạy tiếp — retry, cấu hình lỗi thời, sắp cạn tài nguyên
- INFO: sự kiện nghiệp vụ quan trọng — khởi động, tắt, đơn hàng tạo thành công
- DEBUG: chi tiết cho lập trình viên khi gỡ lỗi — không bật ở production
- TRACE: cực chi tiết, từng bước
Cấu hình mức log theo package
logging:
level:
root: INFO
com.example.order: DEBUG
org.hibernate.SQL: DEBUG
Nguyên tắc log tốt
- Dùng placeholder
{}thay vì nối chuỗi:log.info("user {} paid {}", id, amount)— tránh tốn công tạo chuỗi khi mức log tắt - KHÔNG log dữ liệu nhạy cảm: mật khẩu, token, số thẻ
- Kèm ngữ cảnh định danh (userId, orderId) để lần vết qua nhiều dòng log
- Log exception kèm stack trace:
log.error("msg", ex), đừng chỉex.getMessage()
Log JSON ở production
Với hệ thống tập trung log (ELK, Loki, CloudWatch), log dạng JSON có cấu trúc giúp truy vấn và lọc theo field dễ hơn nhiều so với text thô. Cấu hình encoder JSON cho Logback ở môi trường prod.
👉 Dùng thử công cụ liên quan trên dev-hub: YAML Formatter — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.