← Tất cả bài viết

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đú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

  1. 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
  2. KHÔNG log dữ liệu nhạy cảm: mật khẩu, token, số thẻ
  3. Kèm ngữ cảnh định danh (userId, orderId) để lần vết qua nhiều dòng log
  4. 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.