Cấu hình Logback trong ứng dụng Spring Boot

Trong các dự án Spring Boot, hệ thống ghi log hỗ trợ nhiều định dạng cấu hình khác nhau tùy theo thư viện được sử dụng:

  • Logback: logback.xml, logback-spring.xml, logback.groovy, logback-spring.groovy
  • Log4j: log4j.properties, log4j.xml, log4j-spring.properties, log4j-spring.xml
  • Log4j2: log4j2.xml, log4j2-spring.xml
  • JDK Logging: logging.properties

Tất cả các file cấu hình này cần đặt trong classpath của ứng dụng để Spring Boot tự động nhận diện.

Mức độ log

Các mức log được sắp xếp theo thứ tự tăng dần mức độ nghiêm trọng:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
Chỉ những log có mức độ lớn hơn hoặc bằng mức cấu hình mới được ghi ra.

Cấu trúc cơ bản trong file Logback

<logger>

Đại diện cho một đối tượng ghi log, thường gắn với một package cụ thể. Logger con kế thừa cài đặt từ logger cha (thường là root).
Thuộc tính quan trọng:

  • name: tên package hoặc class
  • level: mức độ log áp dụng
Ví dụ:
<root level="INFO">
    <appender-ref ref="CONSOLE"/>
</root>

<logger name="com.apache.ibatis" level="DEBUG"/>

<appender>

Xác định đích ghi log và cách thức ghi. Một số loại phổ biến:

  • ConsoleAppender: xuất ra console
  • FileAppender: ghi vào file đơn
  • RollingFileAppender: tự động chia nhỏ file khi đạt ngưỡng
  • AsyncAppender: ghi log bất đồng bộ để tăng hiệu năng
Thuộc tính thường dùng: file, encoder, filter, rollingPolicy.

<filter>

Bộ lọc mức độ log, gồm:

  • LevelFilter: lọc theo một mức cụ thể
  • ThresholdFilter: lọc theo ngưỡng (từ mức X trở lên)
Thuộc tính:
  • level: mức log cần xét
  • onMatch: hành động khi khớp (ACCEPT/DENY)
  • onMismatch: hành động khi không khớp

RollingPolicy

Chiến lược chia nhỏ file log:

  • TimeBasedRollingPolicy: chia theo thời gian (ngày, giờ...)
  • SizeAndTimeBasedRollingPolicy: kết hợp kích thước + thời gian

Ghi log câu lệnh SQL của MyBatis

Có thể cấu hình qua file properties:

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
Hoặc qua logger trong logback-spring.xml (chỉ hoạt động nếu dùng Slf4jImpl).

Ghi log câu lệnh SQL của Hibernate

<logger name="org.hibernate.SQL" level="DEBUG"/>
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG"/>
<logger name="org.hibernate.type" level="TRACE"/>
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG"/>
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG"/>

Mẫu định dạng log phổ biến

Ký hiệuMô tả
%d{yyyy-MM-dd HH:mm:ss.SSS}Thời gian ghi log
%-5levelMức độ log, căn trái, độ rộng 5 ký tự
%logger{36}Tên logger (thường là tên class)
%threadTên luồng thực thi
%msgNội dung log
%classTên đầy đủ của class
%methodTên phương thức
%lineSố dòng mã nguồn
%fileTên file mã nguồn

Thẻ: Logback spring-boot mybatis hibernate logging

Đăng vào ngày 17 tháng 6 lúc 02:15